不可变JS.Set - 根据布尔值添加或删除
ImmutableJS.Set - Add or Remove depending on bool
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)});
嗯。。。好吧,这还不错...但仍然:是否有一种多合一的不可变方法?
为什么不为它写一个函数呢?
this.setState({ mySet: modify(mySet)(value)(shouldHaveValue) })
然后编写一个单行函数,如下所示:
const modify = set => value => shouldBe => shouldBe === value ? set.add(value) : set.remove(value)
我不确定你为什么使用Sets
但如果你使用Maps
或Lists
你可以更新它们的值,并可以使用谓词来确定是否创建了值。
ES5
var modify = function(set){
return function(value){
return function(shouldBe){
return shouldBe === value ? set.add(value) : set.remove(value);
};
};
};
相关文章:
- 如何从javascript/jquery中的复选框中获取布尔值
- 根据Select值添加/删除表行
- KendoUI网格行过滤器,带有布尔值下拉列表
- php布尔值's小写AND大写和数字布尔值'可以接受
- 如何在不使用ajax的情况下将pair值添加到数组并发送到django中的视图
- 选中了基于图像的复选框,但未将值添加到文本字段中
- 在GridView中,当单击复选框时,在网格的同一行中使用JavaScript将标签中的值添加到TextBox
- Rails:将表单字段值添加到数据确认消息中
- select中布尔值的Angularjs ng值不起作用
- 将值添加到使用_.map&_创建的变量中.范围
- 如果选中单选框,则将值添加到合计
- RX受试者使用上一个值添加新发射
- 由于布尔值的变化,Django视图中的字符串格式不正确
- MeteorJs Alded autoform,如何从布尔值复选框中获得所需值
- 根据单选按钮值添加到值
- 单击Javascript按钮,将值添加到文本框中
- 将字符串动态转换为布尔值
- Coffeescript:添加一个由布尔值控制的条件类名
- 不可变JS.Set - 根据布尔值添加或删除
- 在JavaScript中为布尔值添加属性