我列出了几种创建嵌套数组并向子数组添加值的方法:
方法 1:有效!
// Create empty nested array:
var arrs = [[],[],[]];
arrs[0].push(1);
arrs[1].push(2);
arrs[2].push(3);
然后,毫不奇怪,arrs
被更新:
[[1],[2],[3]]
方法 2:有效!
var arrs = [];
for (var i = 0; i < 3; i++) {
arrs[i] = [];
}
arrs[0].push(1);
arrs[1].push(2);
arrs[2].push(3);
arrs
:
[[1],[2],[3]]
方式3:?
var arrs = [];
var subArr = [];
for (var i = 0; i < 3; i++) {
arrs[i] = subArr;
}
arrs[0].push(1);
arrs[1].push(2);
arrs[2].push(3);
arrs
:
[[1,2,3],[1,2,3],[1,2,3]]
我的问题:为什么方式3导致arrs
结果为[[1,2,3],[1,2,3],[ 1,2,3]]
而不是 [[1],[2],[3]]
?
最佳答案
在第三种方式中,您通过引用将 arrs
的每个元素分配给同一数组:subArr
。没有复制,arrs
中的所有三个项目都指向内存中的相同值。
当然,当您推送到 arrs[0]
时,您也会推送到 subArr
。重复3次,你就得到了你所经历的结果。
关于javascript - 将元素“插入”嵌套数组中的子数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48602206/