我有一個函數,它以項目數組作爲參數。 在函數中我想找到一個項目並修改它的屬性。從JS中的數組中選擇項目的副本
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);
此代碼是否適合此操作?
注意[Array.prototype.slice](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/slice#Description)返回數組的淺表副本。但是,數組內的對象引用指的是複製數組的相同對象。 – ryeballar