0

私はprototype.slice.callを使用して動的な2次元配列を作成しようとしています。配列の次元は、ユーザーが挿入した値kによって異なります。コードは次のとおりです。

var A = new Array(k);

                if (k > 1) {
                    var args = Array.prototype.slice.call(k, 1);
                    for (var n = 0; n < k; n++) {
                        A[n] = new Array.apply(this, args);
                    }
                }



                alert (A);  
4

1 に答える 1

1

.slice()は間違ったツールです。別の配列の浅いクローン、または配列の一部を作成するために使用されます。

正方形の構造を探している場合は、ネストされた 2 つのループを使用して外側と内側の配列を作成します。

var k = 10;

var a = [];
for (var i = 0; i < k; i++) {
    a[i] = [];
    for (var j = 0; j < k; j++) {
        a[i][j] = i + ':' + j;
    }
}

http://jsfiddle.net/zGhnv/

>[["0:0","0:1","0:2","0:3","0:4","0:5","0:6","0:7" ,"0:8","0:9"],
["1:0","1:1","1:2","1:3","1:4","1:5","1:6","1:7"," 1:8"、"1:9"]、
["2:0","2:1","2:2","2:3","2:4","2:5","2:6","2:7"," 2:8","2:9"],
["3:0","3:1","3:2","3:3","3:4","3:5","3:6","3:7"," 3:8"、"3:9"]、
["4:0","4:1","4:2","4:3","4:4","4:5","4:6","4:7"," 4:8","4:9"],
["5:0","5:1","5:2","5:3","5:4","5:5","5:6","5:7"," 5:8"、"5:9"]、
["6:0","6:1","6:2","6:3","6:4","6:5","6:6","6:7"," 6:8"、"6:9"]、
["7:0","7:1","7:2","7:3","7:4","7:5","7:6","7:7"," 7:8"、"7:9"]、
["8:0","8:1","8:2","8:3","8:4","8:5","8:6","8:7"," 8:8","8:9"],
["9:0","9:1","9:2","9:3","9:4","9:5","9:6","9:7"," 9:8"、"9:9"]]

配列の初期の長さを宣言する必要がないことに注意してください。必要に応じて、各配列にメンバーを追加するだけです。

前もって長さを宣言したい場合は、両方[]を に置き換えることができますnew Array(k)

于 2012-05-13T18:14:45.340 に答える