javascript - 使用 React Immutability helpers 或 Immutable js React 合并不可变对象(immutable对象)数组

标签 javascript arrays merge reactjs 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 中的索引使用 mergeofficial 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"
}]

关于javascript - 使用 React Immutability helpers 或 Immutable js React 合并不可变对象(immutable对象)数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34164027/

相关文章:

javascript - 改进问答游戏中的 javascript 功能

php - jQuery 复选框值依赖提交按钮操作

javascript - 两个水平滚动条

arrays - 更改文本颜色时的 Swift 4 数组问题

javascript - 通过传递函数作为参数来合并数组

R - 在包含 NA 的同一列中合并 data.frames

javascript - 如何访问组件中的 vuejs webpack 配置变量?

javascript - 将数组中的所有其他值移动到新数组中

python - 如何在python2.7上从三个数组中获取三维分布

Git merge 不会第二次 merge 文件