javascript - 将元素“插入”嵌套数组中的子数组

标签 javascript arrays

我列出了几种创建嵌套数组并向子数组添加值的方法:

方法 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/

相关文章:

javascript - 当另一个 Action 被触发时,处于 redux 状态的对象消失

Javascript 在文本上暂停和恢复过渡动画

MySQL返回数组中的打印两次

PHP 数组差异 - 由循环生成与逗号分隔字符串生成

Javascript 插入奇怪的换行符

javascript - 如何只用 v-bind 绑定(bind)属性一次?

javascript - Canvas 下拉文本动画

javascript - TinyMCE 将 > 转换为 >

PHP/ARRAYS/API/JSON - 我不明白为什么我没有得到任何结果

ios - 如何检查(反射)属性是否是数组(任何类型)?