2017-02-27 37 views
0

我有一個函數,它以項目數組作爲參數。 在函數中我想找到一個項目並修改它的屬性。從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); 

此代碼是否適合此操作?

回答

0

Object.assign在我看來,複製對象是很好的。 額外提示 - 要複製數組,array.slice()是最簡單的方法

+0

注意[Array.prototype.slice](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/slice#Description)返回數組的淺表副本。但是,數組內的對象引用指的是複製數組的相同對象。 – ryeballar

相關問題