javascript - 映射一个 ImmutableJS 集合

标签 javascript immutable.js

我有一个 ImmutableJS 结构,如下所示:

let state = fromJS({
  // ...
  foo: [{
    bar: ['id1', 'id2']
  },{
    bar: ['id2', 'id3']
  }]
});

我想映射 foo 并针对每个项目,根据要排除的另一个 id 数组过滤关联的 bar (idsToExclude)。

我想出了这个:

const idsToExclude = ['id3', 'id4'];
state = { 
    ...state, 
    foo: state.get('foo').map((i) => 
        i.set(['bar'], i.get(['bar']
            .filterNot(b => idsToExclude.some(id => id === b)))) 
};

是否有更好、更惯用或更简洁的方式?

我问是因为这看起来很冗长。

最佳答案

我认为使用 .update 可以使它更干净一些,尽管这仍然相当长。您还可以将 .some(id => id === b) 简化为 .contains(b)

state = state.update('foo', foo => 
    foo.map(item => 
        item.update('bar', 
            bar => bar.filterNot(
                id => idsToExclude.contains(id)))));

关于javascript - 映射一个 ImmutableJS 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47146852/

相关文章:

javascript - 富文本编辑器[所见即所得],使用 javascript 进行分页

javascript - 使用沙箱从 Chrome 应用程序发出 ajax 请求

javascript - 从 OrderedMap 中删除元素并保持其顺序

javascript - 不可变 - 使用切片更改数组中的元素(无拼接)

javascript - 使用 immutable.js 有条件地构建列表

javascript - 加载更多数据 ajax PHP onscroll

javascript - ExpressJs 不在某些路线上加载 CSS

javascript - 无法在 ionic 5+ 中使用 ionic 文件传输插件下载文件

javascript - 按值对映射/哈希进行排序,保留键

reactjs - TypeScript 的 `readonly` 能否完全替代 Immutable.js?