Javascript ImmutableJS-从映射中删除元素
我有一张这样结构的地图:Javascript ImmutableJS-从映射中删除元素,javascript,immutable.js,Javascript,Immutable.js,我有一张这样结构的地图: { 1: {}, 2: {} } 我想从中删除2:{}(当然-返回新集合时不使用此选项)。我怎么做? 我试过了,但有点不对劲: theFormerMap.deleteIn([],2) //[] should mean that it's right in the root of the map, and 2 is the name of the object I want to get rid of 只需使用delete方法和双引号中的属性: theFormerM
{
1: {},
2: {}
}
我想从中删除2:{}(当然-返回新集合时不使用此选项)。我怎么做?
我试过了,但有点不对劲:
theFormerMap.deleteIn([],2) //[] should mean that it's right in the root of the map, and 2 is the name of the object I want to get rid of
只需使用delete方法和双引号中的属性:
theFormerMap = theFormerMap.delete("2")
如果您使用:
只需使用delete方法并传递要删除的属性:
theFormerMap = theFormerMap.delete(2)
如果这不起作用,那么您可能已经使用fromJS
创建了formerMap
:
Immutable.fromJS({1: {}, 2: {}}).delete(2)
=> Map { "1": Map {}, "2": Map {} }
Immutable.Map().set(1, Immutable.Map()).set(2, Immutable.Map()).delete(2)
=> Map { 1: Map {} }
键2并没有被删除,因为它实际上是一个字符串键。原因是javascript对象将数字键转换为字符串
但是,如果不使用fromJS
,则Immutable.js确实支持带有整数键的映射:
Immutable.fromJS({1: {}, 2: {}}).delete(2)
=> Map { "1": Map {}, "2": Map {} }
Immutable.Map().set(1, Immutable.Map()).set(2, Immutable.Map()).delete(2)
=> Map { 1: Map {} }
谢谢,我甚至尝试过这个,但意外地发现问题出在哪里-参数必须是字符串。我已经给出了一个数字,所以对每个人来说,小心点……这让我意识到,你的解决方案不起作用,因为你的参数是字符串,但需要一个数字。无论如何,感谢您提供有关delete()方法的信息。请记住,您可以在堆栈溢出代码段中显示正在运行的代码。一些JSLint测试建议使用双引号,这表示一个数据字符串。查看以下内容了解更多详细信息。如果您想使用
deleteIn
删除键2,您可以这样称呼它:formermap.deleteIn([2])