使用 React Immutability helpers 或 Immutable js React 合并不可变对象数组
React merge immutable array of objects using React Immutability helpers or Immutable js
我正在尝试使用 Reacts Immutability helpers 或 Immutable js 合并一个不可变的对象数组。我正在尝试创建一个仅包含名称已更改的记录的列表。如果名称在提交前已多次更改,我试图避免在列表中创建重复项,这让我相信合并是我需要采取的路径。下面是我要实现的示例。
var objArray = [{id:4, name:'bar'}, {id:10, name:'test'}];
var newObj = {id:4, name:'foo'};
var updatedEntries = update(this.state.nameChanges, {$merge: {newObj});
我要找的结果是:
objArray = [{id:4, name:'foo'}, {id:10, name:'test'}]
我似乎得到的结果是:
objArray = [{id:4, name:'foo'}]
我尝试过使用 Facebook React 不变性助手,但似乎无法获得我需要的结果。我似乎在尝试围绕合并函数实际执行的操作时遇到了一些麻烦。感谢任何帮助。
谢谢
大功告成,您需要做的是先筛选出您想要的对象,然后通过其在objArray
中的索引使用merge
。 official docs 展示了如何做到这一点
var objArray = [{id: 4, name: 'bar'}, {id: 10, name: 'test'}];
var i = -1;
objArray.map(function (obj, index) {
if (obj.name === 'bar') i = index;
});
var mergeObject = {};
mergeObject[i] = {$merge: {name: 'Foo'}};
var newState = update(objArray, mergeObject);
>> [[object Object] {
id: 4,
name: "Foo"
}, [object Object] {
id: 10,
name: "test"
}]
我正在尝试使用 Reacts Immutability helpers 或 Immutable js 合并一个不可变的对象数组。我正在尝试创建一个仅包含名称已更改的记录的列表。如果名称在提交前已多次更改,我试图避免在列表中创建重复项,这让我相信合并是我需要采取的路径。下面是我要实现的示例。
var objArray = [{id:4, name:'bar'}, {id:10, name:'test'}];
var newObj = {id:4, name:'foo'};
var updatedEntries = update(this.state.nameChanges, {$merge: {newObj});
我要找的结果是:
objArray = [{id:4, name:'foo'}, {id:10, name:'test'}]
我似乎得到的结果是:
objArray = [{id:4, name:'foo'}]
我尝试过使用 Facebook React 不变性助手,但似乎无法获得我需要的结果。我似乎在尝试围绕合并函数实际执行的操作时遇到了一些麻烦。感谢任何帮助。
谢谢
大功告成,您需要做的是先筛选出您想要的对象,然后通过其在objArray
中的索引使用merge
。 official docs 展示了如何做到这一点
var objArray = [{id: 4, name: 'bar'}, {id: 10, name: 'test'}];
var i = -1;
objArray.map(function (obj, index) {
if (obj.name === 'bar') i = index;
});
var mergeObject = {};
mergeObject[i] = {$merge: {name: 'Foo'}};
var newState = update(objArray, mergeObject);
>> [[object Object] {
id: 4,
name: "Foo"
}, [object Object] {
id: 10,
name: "test"
}]