我在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

09-12 07:48