mergeDeepIn() 将新项目推送到 immutable.js 中的列表

mergeDeepIn() to push an new item to a List in immutable.js

Example

将新项目推送到列表的 number 的最佳方法是什么?

var data = {group:{number:[111,222,333]},status:'okay'}
var state = Immutable.fromJS(data)
state = state.mergeDeepIn(['group','number'],[444])
console.log(JSON.stringify(state.toJS()))

如您在控制台中所见,输出变为:

{"group":{"number":[444,222,333]},"status":"okay"}

为什么 mergeDeepIn() 将第一项 111 替换为 444?我认为它会像这样将 444 附加到现有列表中:

{"group":{"number":[111,222,333,444]},"status":"okay"}

Merge 使用合并列表的当前值更新索引。

您有:[111, 222, 333][444],此处

[0] = 111 is merged it with [0] = 444 giving the resulting list as [444, 222, 333].

此外,mergeDeepInupdateIn 的包装(与 mergeDeep 相结合)- 更多细节是 here.