我想在不可变列表中替换/添加新值:
const old = [
{ id: 1, value: 'foo' },
{ id: 3, value: 'bar' },
{ id: 2, value: 'baz' },
]
const new = [
{ id: 1, value: 'quux' }, // update
{ id: 4, value: 'asd' }, // push
]
union == [
{ id: 1, value: 'quux' }, // updated
{ id: 3, value: 'bar' },
{ id: 2, value: 'baz' },
{ id: 4, value: 'asd' }, // new
]
如果列表不具有此功能,但某些东西具有功能,则我可以使用任何数据类型
如果这不是在immutable.js中内置的,那就这么说,我已经为此编写了一个脚本,只是缺少了内置方法
答案 0 :(得分:0)
联合算法
首先,您必须维护两个映射,键分别为id
和值分别为object
,然后检查较大尺寸的数组的长度,然后将较小尺寸映射的较大尺寸的数组传递给{{ 1}}函数,您可以遍历数组并检查是否在地图中存在(如果是),然后更新对象并从地图中删除该行,否则将对象添加到输出中。在for循环完成之后,检查map是否存在元素,然后将map中的所有值推入输出数组并返回;
index.js
merged
正在工作的jsFiddle演示-https://jsfiddle.net/qz25hnmf/