不可变的js修改所有嵌套记录

时间:2016-03-24 09:22:24

标签: javascript immutable.js

我试图修改已完成的' OrderedMap的所有记录的属性。这是OrderedMap:

const TodoItem = Record({text: '', completed: false});
let state = OrderedMap({'0': new TodoItem({text: 'First Item'})});

我目前的代码是:

state.forEach((v,k) => {
  state = state.updateIn([k.toString(),'completed'], completed => true);
});
return state;

这有效,但是如何?

它是否有效,因为状态是不可变的,在第一次迭代之后,forEach在第一个状态obj运行,现在是匿名的?

还有其他更好的'修改所有嵌套元素的属性的可能性?

1 个答案:

答案 0 :(得分:1)

是的 -

state = state.map((todoItem)=>todoItem.set("completed", true));