如何使用ImmutableJS更新fromJS中的对象?

时间:2016-04-19 11:59:01

标签: immutable.js

您好,我是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空数组中。

有人可以建议这样做的方法吗?

1 个答案:

答案 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),