配列を実行し、その値を「[1,2,3]」のような文字列に収集する関数を作成しようとしています。また、特定のインデックスに従って、場合によっては配列の一部のみを表示する必要もあります。例: 配列 [1,2,0] をインデックス 0 からインデックス 1 に出力すると、'[1,2]' のようになります。何らかの理由で、私の関数はまったく出力を与えません。ここにあります:
function Tower(size, isFull) {
this.count = 0;
this.tower = new Array(size);
this.add = function(disk) {
this.tower[this.count++] = disk;
};
if (isFull) {
for (var i = 1; i <= size; i++) {
this.add(i);
};
}
this.canAdd = function(disk) {
return this.count == 0 || this.tower[this.count - 1] > disk;
};
this.getTopDiskValue = function() {
return (this.count > 0) ? this.tower[this.count - 1] : 0;
};
this.popTop = function() {
return this.tower[--this.count];
};
this.isFull = function() {
return this.count == this.tower.length;
};
this.printable = function() {
var output = "[";
for (var i = 0; i < this.count; i++) {
output += "" + this.tower[i] + ',';
}
return output.substring(0, output.length() - 1) + (output.length() > 1 ? ']' : "");
};
}
コードが次のようになるように、 printable() 関数が文字列を返すことを期待しています。
var tower = new Tower(3,true);
alert(tower.printable());
'[1,2,3]' というテキストが表示された警告ボックスが表示されます。このオブジェクトは Java からの翻訳です。Javaでうまくいきましたが、翻訳は完璧ではないと思います。