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

标签 javascript immutable.js

我正在尝试修改 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(现在是匿名的)上运行?

还有其他“更好”的可能性来修改所有嵌套元素的属性吗?

最佳答案

是的,有 -

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

关于javascript - 不可变的js修改所有嵌套记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36196747/

相关文章:

javascript - 如何将 jQuery FLOT 图表保存为 .png 或其他图像格式?

javascript - 使用 Immutable 更新 React 状态

javascript - 为什么在使用 isMap() 检查后 Flow 无法判断我的对象是不可变映射?

javascript - 如何从 Set 中获取基于索引的值

javascript - 忽略 Javascript 正则表达式中的换行符

javascript - 我如何通过单击按钮获得此交通灯序列???

javascript - 无法访问javascript数组中的项目

JavaScript 返回克隆不是 countMembers 的函数

javascript - 如何实现不变性

javascript - ImmutableJS Map() 和 fromJS() 有什么区别?