我在JavaScript中定义了一个数组列表:
var arrListContainer = [];
var emptyArray = [];
for (var i = 0; i < 5; ++i) {
arrListContainer.push(emptyArray);
}
list的默认值为:
[[], [], [], [], []]
我想为
arrListContainer[2]
添加值,所以:arrListContainer[2].push("a");
为什么结果是
[["a"], ["a"], ["a"], ["a"], ["a"]]
?我不明白我只需要
[[], [], ["a"], [], []]
谢谢!
最佳答案
您要使arrListContainer
中的每个索引指向相同的对象实例,您需要在循环内创建新的emptyArray
(或直接推送文字)
var arrListContainer = [], i;
for (i = 0; i < 5; ++i) {
arrListContainer.push([]);
}
如果您想更加清楚,您所做的方式与此类似
var foo = [],
bar = foo;
foo[2] = 'baz';
// what is bar[2]?
bar[2]; // "baz"
// because
foo === bar; // true