Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将对象推送到数组时,对象中一个特定变量的所有值都将相同_Javascript - Fatal编程技术网

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

Javascript 将对象推送到数组时,对象中一个特定变量的所有值都将相同,javascript,Javascript,我正在创建将同一个对象推10次到一个数组,但每次它推一次,它都会用+1更改对象内部的一个变量。但是当循环结束时,所有对象中的所有变量都以10结束(相同的值)。为什么会这样 例如: var obj = {} var array = []; for(var i = 0; i < 10; i++){ obj.number = i; array.push(obj); } var obj={} var数组=[]; 对于(变量i=0;i

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

例如:

var obj = {}
var array = [];

for(var i = 0; i < 10; i++){
    obj.number = i;
    array.push(obj);
}
var obj={}
var数组=[];
对于(变量i=0;i<10;i++){
obj.number=i;
阵列推送(obj);
}
当我那时 console.log(数组)


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

您正在数组中推送一个对象,这意味着您正在将一个引用推送到同一个对象;如果你在某处改变你的对象,它会在任何地方改变

您可以:

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

var数组=[];
对于(变量i=0;i<10;i++){
var obj={}
obj.number=i;
阵列推送(obj);
}

console.log(数组)您在整个时间内都在更新同一对象移动对象初始化