示例:
test = {one: 1, two: 'two', three: 3};
arr = [];
arr.unshift(test);
arr.unshift(test);
arr.unshift(test);
arr[0].two = 2;
结果:
我想要什么?当我访问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/