在JavaScript中向现有数组添加新值

在JavaScript中向现有数组添加新值,javascript,Javascript,我在JavaScript中定义了一个数组列表: var arrListContainer = []; var emptyArray = []; for (var i = 0; i < 5; ++i) { arrListContainer.push(emptyArray); } 为什么结果是[“a”],[“a”],[“a”],[“a”],[“a”],[“a”] 我不明白。我只需要[]、[]、[“a”]、[]、[]、[]就行了。 谢谢大家! 如果要使arrListContainer中

我在JavaScript中定义了一个数组列表:

var arrListContainer = [];
var emptyArray = [];
for (var i = 0; i < 5; ++i) {
    arrListContainer.push(emptyArray);
}
为什么结果是
[“a”],[“a”],[“a”],[“a”],[“a”],[“a”]

我不明白。我只需要<代码>[]、[]、[“a”]、[]、[]、[]就行了。


谢谢大家!

如果要使
arrListContainer
中的每个索引指向同一个对象实例,则需要在循环中创建新的
emptyArray
s(或直接推送一个文本)


在初始化过程中,将相同的emptyArray实例推送到每个arrListContainer元素中。因此,当您稍后将“a”推入它的第二个索引时,您将影响其余的元素,因为它们都包含相同的emptyArray项

如果将代码更改为以下格式,则不重复使用相同的emptyArray变量:

var arrListContainer = [];
for (var i = 0; i < 5; ++i) {
    arrListContainer.push([]);
}
arrListContainer[2].push("a");
var arrListContainer=[];
对于(变量i=0;i<5;++i){
arrListContainer.push([]);
}
arrListContainer[2]。推送(“a”);
var arrListContainer=[];
var emptyArray=[];
对于(变量i=0;i<5;++i){
var emptyArray=[];
如果(i==2){
空的。推(“a”);
}
arrListContainer.push(清空数组);
}
对于(变量i=0;i<5;++i){
console.log(arrListContainer[i]);
}

这是你想要的吗?在您的js文件或JSIDdle中试用,并查看控制台的结果。

您可以将问题复制到一个代码段或创建一个JSIDdle吗?尝试这样做:
arrListContainer.push([])
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
var arrListContainer = [];
for (var i = 0; i < 5; ++i) {
    arrListContainer.push([]);
}
arrListContainer[2].push("a");
var arrListContainer = [];
var emptyArray = [];


for (var i = 0; i < 5; ++i) {
    var emptyArray = [];
    if(i === 2){
        emptyArray.push("a");
    }
    arrListContainer.push(emptyArray);
}


for(var i=0; i< 5; ++i){
    console.log(arrListContainer[i]);
}