javascript - 如何将多个对象添加到数组

标签 javascript arrays object push

为什么a[0].nil的值是400,怎么设置成200,谢谢解答

a = new Array();
x = new Object();
str = "nil";

x[str] = 200;

a.push(x);

x[str] = 400;

a.push(x);

alert("1 = "+ a[0].nil);
alert("2 = "+ a[1].nil);

最佳答案

因为您将对象 x 的引用推送到数组 a,而不是该对象的副本。

修改x[str]的值后,指向更新对象的[0]引用。

因此在您的代码中,a[0]a[1]x 指向同一个对象。如果您希望在代码执行的特定时刻添加 x 对象的副本,您必须克隆您的对象 x 并将克隆插入数组。

SO问题How do I correctly clone a JavaScript object?将帮助您克隆 js 对象。另见文章 "JavaScript: Passing by Value or by Reference"更好地了解 javascript 中的变量传递。

祝你好运!

关于javascript - 如何将多个对象添加到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37273079/

相关文章:

javascript - CoffeeScript 中的意外缩进

java - 如何正确使用 clone() 方法?

javascript - Javascript通过递归获取根元素

javascript - 为什么 for..in 循环不遍历对象的原型(prototype)

javascript - 为什么我得到 undefined 加上值?

javascript - 在 javascript 中替换 eval() 的正确方法是什么?

javascript - 如何计算字体大小?

JavaScript——如何遍历一个对象数组来创建一个新对象,其键是原始对象的初始键/值对的值

android - 如何使用 SharedPreferences 保存字符串数组?

java - 如何为 ArrayList 中的对象执行 add 方法