在将对象推送到数组中时,对象中一个特定变量的所有值都变为相同

时间:2019-04-16 14:51:43

标签: javascript

我正在创建将同一个对象推入数组10次,但是每次推入它都会用+1更改对象内部的变量。但是,当循环结束时,所有对象中的所有变量都以10(相同的值)结束。为什么会这样?

示例:

var obj = {}
var array = [];

for(var i = 0; i < 10; i++){
    obj.number = i;
    array.push(obj);
}

那时我     console.log(array)

它返回数组,但是所有obj的编号都相同。为什么会这样?

1 个答案:

答案 0 :(得分:0)

您要推送数组中的一个对象,这意味着您要推送引用到同一对象;如果您要在某个地方更改对象,它将随处更改。

您可以:

在每次迭代中创建一个新对象:

List

或者,克隆对象以确保所做的更改不会应用于引用

var array = [];

for(var i = 0; i < 10; i++){
    var obj = {}
    obj.number = i;
    array.push(obj);
}

console.log(array);