首页 > 解决方案 > 更改第一个对象中的值会导致第二个对象更改

问题描述

我有一个对象数组:

const test = new Array(2).fill({ a: 1, b: 2 });

test[0].a = 3;

我只想在第一个对象中重新分配“a”,但是当我使用上面的代码时,两个“a”都会被重新分配。和输出:

[ { a: 3, b: 2 }, { a: 3, b: 2 } ]

标签: javascriptarraystypescriptjavascript-objects

解决方案


如数组填充方法的文档中所述

如果第一个参数是一个对象,则数组中的每个槽都将引用该对象。

一个可能的解决方案:

const test = Array.from({ length: 2 }).map(() => ({ a: 1, b: 2 }));

test[0].a = 3;

console.log(test);

推荐阅读