您好,我是ImmutableJs的新手。我想更新ImmutableJs数组中的特定对象。
这是我的数组
const todos = Immutable.fromJS([{
text: 'ADDED TODO',
id: 0,
todo:[]
},
{
text: 'DELETED TODO',
id: 1,
todo:[]
},
{
text: 'DELETED TODO',
id: 1,
todo:[]
}]);
现在我想在第二个对象中推送一个对象,其中id为1,在todo空数组中。
有人可以建议这样做的方法吗?
答案 0 :(得分:1)
如果您的列表是id
订购的,您可以这样做:
const newTodos = todos.update(
1,
map => map.update(
"todo",
list => list.push("item")
)
);
首先update
找到具有相应索引的Map
并将其应用于函数。第二个update
类似,它找到todo
的密钥并将其应用于另一个函数。然后,您只需将任何项目推送到todo
列表中即可完成。
如果您不确定id
是否与索引相对应,请将1
替换为findIndex
,如下所示。
todos.findIndex(todo => todo.get("id") === 1),