Javascript ImmutableJS.Set-根据bool添加或删除

Javascript ImmutableJS.Set-根据bool添加或删除,javascript,set,immutable.js,Javascript,Set,Immutable.js,对于Immutable.Set是否有一行程序,它将根据bool添加()或删除()一个值 当然,这可以通过以下方式实现: if (listShouldHaveFooBool) { mySet.add('foo'); } else { mySet.remove('foo'); } 但是有没有一个班轮可以像这样工作?(使用虚构的.modify()方法) 但我正在寻找一个可以轻松放入对象文字声明(如React setState)的单行程序: this.setState({ mySet: myS

对于Immutable.Set是否有一行程序,它将根据bool添加()或删除()一个值

当然,这可以通过以下方式实现:

if (listShouldHaveFooBool) {
  mySet.add('foo');
}
else {
  mySet.remove('foo');
}
但是有没有一个班轮可以像这样工作?(使用虚构的.modify()方法)

但我正在寻找一个可以轻松放入对象文字声明(如React setState)的单行程序:

this.setState({ mySet: mySet.modify(value, shouldHaveValue)});
三级操作员可以工作,但很难看:

this.setState({ mySet: shouldHaveValue ? mySet.add(value) : mySet.remove(value)});

嗯。。。好吧,那还不错。。。但是:有没有一个万能的不可变方法呢?

为什么不为它编写一个函数呢

this.setState({ mySet: modify(mySet)(value)(shouldHaveValue) })
然后编写一行函数,如:

const modify = set => value => shouldBe => shouldBe === value ? set.add(value) : set.remove(value)
我不知道为什么要使用
设置
,但如果使用
映射
列表
,则可以更新它们的值,并可以使用它们的谓词来确定是否创建了值

ES5

var modify=函数(集合){
返回函数(值){
返回函数(应为){
return shouldBe==value?set.add(value):set.remove(value);
};
};
};

不可变。Set
不提供“非难看”的方法。
const modify = set => value => shouldBe => shouldBe === value ? set.add(value) : set.remove(value)