ImmutableJS - 从Map中删除元素

use*_*212 17 javascript immutable.js

我有一个这种结构的地图:

{
1: {},
2: {}
}
Run Code Online (Sandbox Code Playgroud)

我想从它中删除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
Run Code Online (Sandbox Code Playgroud)

Joh*_*ria 19

只需在双引号中使用delete方法和属性:

theFormerMap = theFormerMap.delete("2")
Run Code Online (Sandbox Code Playgroud)


gab*_*elf 6

只需使用delete方法并传递要删除的属性即可:

theFormerMap = theFormerMap.delete(2)
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,那么您可能theFormerMap使用来创建了fromJS

Immutable.fromJS({1: {}, 2: {}}).delete(2)
=> Map { "1": Map {}, "2": Map {} }
Run Code Online (Sandbox Code Playgroud)

实际上,键2并未删除,实际上是字符串键。原因是javascript对象将数字键转换为字符串。

但是,如果您不使用整数键构造映射,则Immutable.js确实支持带有整数键的映射fromJS

Immutable.Map().set(1, Immutable.Map()).set(2, Immutable.Map()).delete(2)
=> Map { 1: Map {} }
Run Code Online (Sandbox Code Playgroud)