我正在创建将同一个对象推入数组10次,但是每次推入它都会用+1更改对象内部的变量。但是,当循环结束时,所有对象中的所有变量都以10(相同的值)结束。为什么会这样?
示例:
var obj = {}
var array = [];
for(var i = 0; i < 10; i++){
obj.number = i;
array.push(obj);
}
那时我 console.log(array)
它返回数组,但是所有obj的编号都相同。为什么会这样?
答案 0 :(得分:0)
您要推送数组中的一个对象,这意味着您要推送引用到同一对象;如果您要在某个地方更改对象,它将随处更改。
您可以:
在每次迭代中创建一个新对象:
List
或者,克隆对象以确保所做的更改不会应用于引用
var array = [];
for(var i = 0; i < 10; i++){
var obj = {}
obj.number = i;
array.push(obj);
}
console.log(array);