所以我正在测试这段代码:
<script>
var newData = {}, graphs = []
for(var j=0; j<2; j++){
newData["name"] = 'value '+ j
console.log(newData["name"]);
graphs.push(newData);
console.log(graphs);
}
</script>
我在网络控制台中得到以下输出:
value 0
Array [ Object ]
value 1
Array [ Object, Object ]
数组中的所有对象都具有完全相同的值:
name:"value 1"
我真的很挣扎,因为我没有更改任何值,并且名称仍然在同一个循环中更改。
感谢您提前的答复!
在 JavaScript 中将一个对象放入数组意味着你将一个参考到数组中的该对象而不是value那个物体的。在您的示例中,您创建了一个对象,newData
然后您在循环中更改该对象的 name 属性。这意味着在循环结束时你会留下一个newData
对象与{'name': 'value 2'}
当你看一下graphs[0]
,它会告诉你它包含一个参考到 newData 看起来像{'name': 'value 2'}
。这同样适用于graphs[1]
您可以通过每次在数组中创建一个新对象来解决这个问题:
graphs = []
for(var j=0; j<2; j++){
var newData = {}
newData["name"] = 'value '+ j
console.log(newData["name"]);
graphs.push(newData);
console.log(graphs);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)