鉴于此:
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))
(filter
和 map
是标准的 JS,Immutable 提供了自己的实现,直接与 Immutable 集合一起工作)
关于javascript - 一次从不可变列表中删除多个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36444682/