使用 prototype.slice.call 定义动态二维数组

defining a dynamic 2 dimensional array using prototype.slice.call

本文关键字:动态 二维数组 定义 call prototype slice 使用      更新时间:2023-09-26

我尝试使用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);  

.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)