0

我尝试使用prototype.slice.call 创建一个动态二维数组。数组维度取决于用户插入的值 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"]]

请注意,我真的不需要声明 Array 的初始长度。我可以根据需要将成员添加到每个数组。

如果要预先声明长度,可以将两者都替换[]new Array(k).

于 2012-05-13T18:14:45.340 回答