javascript - 数组中的所有对象都会受到影响

标签 javascript arrays object

示例:

test = {one: 1, two: 'two', three: 3};

arr = [];
arr.unshift(test);
arr.unshift(test);
arr.unshift(test);

arr[0].two = 2;

结果:

enter image description here

我想要什么?当我访问arr[index].two时,我只想更改第一个数组中的值,其他数组仍保留值two。我能做什么来解决这个问题?

最佳答案

发生这种情况是因为您实际上向同一个对象添加了 3 个引用。因此任何修改都会影响数组中的 3 个条目。

您想要的是为每个条目创建对象的不同副本,因此它们在逻辑上都是不同的,并且可以单独修改。

您可以通过使用 Object.assign({}, yourModelObject) 来实现此目的。

例如,请参阅以下代码片段:

let test = {one: 1, two: 'two', three: 3};
let arr = [] 

arr.unshift(Object.assign({}, test));
arr.unshift(Object.assign({}, test));
arr.unshift(Object.assign({}, test));

arr[0].two = 2
console.log(arr)

关于javascript - 数组中的所有对象都会受到影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49847433/

相关文章:

javascript - 居中 slider 元素符号

javascript - 如何在类中用 Jest 模拟节点模块?

arrays - 将大值传递给模块

excel - 如何复制单元格格式和样式

java - 我如何测试接口(interface)?

javascript - 如何使用 JSF 2.0 和 Primefaces 3.5 验证是否成功打开新选项卡?

javascript - 如何将类应用于导航中的选定项目?

Javascript:实例化对象数组的最佳方式

arrays - Fortran中多维数组的线性索引

json - 用jq合并两个JSON对象