我在JavaScript中定义了一个数组列表:
var arrListContainer = [];
var emptyArray = [];
for (var i = 0; i < 5; ++i) {
arrListContainer.push(emptyArray);
}
列表的默认值为:[[], [], [], [], []]
我想为arrListContainer[2]
增加价值,所以:
arrListContainer[2].push("a");
为什么结果为[["a"], ["a"], ["a"], ["a"], ["a"]]
?
我不明白。我只需要[[], [], ["a"], [], []]
谢谢!
答案 0 :(得分:1)
在初始化期间,您将同一个emptyArray实例推送到每个arrListContainer元素中。因此,当您稍后将“a”推入其中的第二个索引时,您将影响其余元素,因为它们都包含相同的emptyArray项。
如果您将代码更改为以下代码,那么您不会重复使用相同的emptyArray变量:
var arrListContainer = [];
for (var i = 0; i < 5; ++i) {
arrListContainer.push([]);
}
arrListContainer[2].push("a");