我有将数组作为参数的函数。 在功能中,我想找到一个项目并修改其属性。
const defaultGroup = find(groupedCustomFields, group => group.name === DEFAULT_GROUP); //[find][1] - it's `lodash` function
defaultGroup.fields = defaultGroup.fields.filter(f => !f.isGroupEditable);
此代码从集合中选择项目(第一个匹配的项目)并更新对象属性。
结果我的输入集合也被更新(更新了有条件的项目)。 我不想这样做。所以我想我应该修改这个项目的副本。
最好的方法是什么?
const defaultGroup = find(groupedCustomFields, group => group.name === DEFAULT_GROUP),
copyOfDefGroup = Object.assign({}, defaultGroup);
此代码更适合此操作吗?
答案 0 :(得分:1)
因为您在标签中添加了“TypeScript”,所以我想提一下,从TypeScript 2.1开始,您就有了“对象传播”。
因此您可以轻松地复制对象(或合并多个),如下所示:
let copy = { ...original };
答案 1 :(得分:0)
Object.assign
对复制对象很好。
额外提示 - 要复制数组,array.slice()
是最简单的方法