Given this:
state = Immutable.fromJS({
  selectedTrackIds: ['foo', 'bar', 'baz'],
});
Is there a way to get a new state where 'foo' and 'baz' are removed from selectedTrackIds, using a single statement (using only Immutable and plain JS)? Or will I just have to use lodash?
return state.set('selectedTrackIds', Immutable.fromJS(_.difference(
  state.get('selectedTrackIds').toJSON(), ['foo', 'baz']
)));
                You can use filter to remove the items you don't want:
return state.set('selectedTrackIds',
  state.get('selectedTrackIds').filter(function(x) {
    return ['foo', 'baz'].indexOf(x) < 0; // false return value => remove from list
  })
);
Or combine it with map, and some ES6 syntax:
state.map(x => x.filter(y => ['foo', 'baz'].indexOf(y) < 0))
(filter and map are standard JS, and Immutable provides its own implementations that work directly with Immutable collections)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With