【发布时间】:2016-01-27 23:37:08
【问题描述】:
Immutable.Set 是否有一个单行代码,可以根据布尔值添加()或删除()一个值?
当然可以这样做:
if (listShouldHaveFooBool) {
mySet.add('foo');
}
else {
mySet.remove('foo');
}
但是有没有一种可以像这样工作的单线器? (使用虚构的 .modify() 方法)
// mySet = ['foo', 'bar', baz']
// listShouldHaveFooBool = false;
mySet.modify('foo', listShouldHaveFooBool);
// mySet = ['bar', baz']
listShouldHaveFooBool = true;
mySet.modify('foo', listShouldHaveFooBool);
// mySet = ['foo', 'bar', baz']
但我正在寻找一种可以轻松放入对象文字声明(如 React setState)的单行:
this.setState({ mySet: mySet.modify(value, shouldHaveValue)});
三级算子可以用,但很丑:
this.setState({ mySet: shouldHaveValue ? mySet.add(value) : mySet.remove(value)});
嗯...好吧,这还不错...但仍然:是否有一个一体化的 Immutable 方法来解决这个问题?
【问题讨论】:
-
Immutable.Set没有提供“不丑”的方式来做到这一点。
标签: javascript set immutable.js