Javascript 阵列中的所有对象都会受到影响

Javascript 阵列中的所有对象都会受到影响,javascript,arrays,object,Javascript,Arrays,Object,样本: 结果: 我想要什么?我只想更改第一个数组中的值,其他数组在访问arr[index].two时仍使用值two。我能做些什么来解决这个问题呢?发生这种情况的原因是,您实际上向同一对象添加了3个引用。因此,任何修改都会影响数组中的3个条目 您想要的是为每个条目创建对象的不同副本,这样它们在逻辑上都是不同的,并且可以单独修改 您可以通过使用Object.assign({},yourModelObject)来实现这一点 例如,请参见以下代码段: let test={1:1,2:2',3:3};

样本:

结果:


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

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

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

您可以通过使用
Object.assign({},yourModelObject)
来实现这一点

例如,请参见以下代码段:

let test={1:1,2:2',3:3};
设arr=[]
arr.unshift(Object.assign({},test));
arr.unshift(Object.assign({},test));
arr.unshift(Object.assign({},test));
arr[0]。两个=2

console.log(arr)
您正在推送/取消移动相同的引用。
使用
对象。创建(…)
创建新引用,然后您将能够修改数组中的任何单个实例

Object.create()
方法创建一个新对象,使用现有对象提供新创建的对象的
\uuuuuuuuuuuuuuu

let测试={
一:一,,
二,"二",,
3:3
};
设arr=[];
arr.push(Object.create(test));
arr.push(Object.create(test));
arr.push(Object.create(test));
arr[0].two=2;
console.log(arr[0].two)
console.log(arr[1].two)

console.log(arr[2].two)
您正在将相同的引用推入数组。为数组中的eact项创建一个新对象。@DanielA.White执行类似于
arr.unshift(新对象(测试))的操作
我得到了相同的结果,你能告诉我我需要做什么吗?如果你用
console.log(arr)
注销整个arr,这会创建3个对象,其中
test
作为
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
,但如果你仍然可以访问这些对象的成员,它会显示没有成员的对象数组
test = {one: 1, two: 'two', three: 3};

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

arr[0].two = 2;