Javascript immutable.js映射到数组(列表)并添加属性

Javascript immutable.js映射到数组(列表)并添加属性,javascript,immutable.js,Javascript,Immutable.js,我刚开始使用immutable.js,但我很难弄清楚如何在数组中的对象上设置新属性。我在文档中找不到这种变化的例子 我基本上只是想改变一下: [{ gitInfo: {id: 8001, host: '', …}, module: {id: 24875, name: "blah", …} }...] 为此: [{ gitInfo: {id: 8001, host: '', …}, module: {id: 24875, name: "blah", isStared: tru

我刚开始使用immutable.js,但我很难弄清楚如何在数组中的对象上设置新属性。我在文档中找不到这种变化的例子

我基本上只是想改变一下:

[{ 
  gitInfo: {id: 8001, host: '', …},
  module: {id: 24875, name: "blah", …}
}...]
为此:

[{ 
  gitInfo: {id: 8001, host: '', …},
  module: {id: 24875, name: "blah", isStared: true …}
}...]
因此,w/out immutable.js我将有如下内容:

function markModules(modules) {
    modules.map( (module) => {
      module.module.isStarred = false;
      if (contains(this.props.stars, module.module.id)) {
        module.module.isStarred = true;
      }
    })
    return modules;
  }
我假设我需要这样的东西,但再一次,我没有找到任何例子如何做到这一点


感谢您提供的所有提示或示例链接。

如果没有Immutable.js(
.map
),您可以像使用Immutable.js一样进行操作

如果你想把额外的逻辑放进去:

function markModules(modules) {
  return modules.map((module) => {
    const isStarred = contains(this.props.stars, module.getIn(['module', 'id']));
    return module.setIn(['module', 'isStarred'], isStarred);
  })
}
关键是将if语句转换为返回值的值/函数,而不是更新数据结构

function markModules(modules) {
  return modules.map((module) => {
    const isStarred = contains(this.props.stars, module.getIn(['module', 'id']));
    return module.setIn(['module', 'isStarred'], isStarred);
  })
}