javascript - 一次从不可变列表中删除多个项目

标签 javascript immutable.js

鉴于此:

state = Immutable.fromJS({
  selectedTrackIds: ['foo', 'bar', 'baz'],
});

有没有办法使用单个语句(仅使用不可变和纯 JS)从 selectedTrackIds 中删除“foo”和“baz”?还是我只需要使用 lodash?

return state.set('selectedTrackIds', Immutable.fromJS(_.difference(
  state.get('selectedTrackIds').toJSON(), ['foo', 'baz']
)));

最佳答案

您可以使用filter 删除不需要的项目:

return state.set('selectedTrackIds',
  state.get('selectedTrackIds').filter(function(x) {
    return ['foo', 'baz'].indexOf(x) < 0; // false return value => remove from list
  })
);

或者结合map,和一些ES6语法:

state.map(x => x.filter(y => ['foo', 'baz'].indexOf(y) < 0))

(filtermap 是标准的 JS,Immutable 提供了自己的实现,直接与 Immutable 集合一起工作)

关于javascript - 一次从不可变列表中删除多个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36444682/

相关文章:

javascript - CORS 没有 Access-Control-Allow-Origin header

json - 如何将 redux 存储对象保存到外部 JSON 文件..?

javascript - 如何从 immutable.js 创建的列表中获取所有值?

javascript - 覆盖 Immutable.js 实例的 getter 逻辑

javascript - 延迟 2 秒或网页 AJAX 调用后的后续点击

javascript - 对正在馈送的可观察流进行单元测试的正确方法

javascript - Node js 中的 Azure 表存储延续 token

javascript - 链接异步函数?

immutable.js - 如何用 Flow 描述 Immutable.js map 形状

javascript - 不可变 vs javascript 数组、对象——什么是正确的平衡点?