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])