我有一个具有以下结构的地图:
{
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
我有一个具有以下结构的地图:
{
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
创建了theFormerMap
:Immutable.fromJS({1: {}, 2: {}}).delete(2)
=> Map { "1": Map {}, "2": Map {} }
由于javascript对象将数字键转换为字符串,因此Key 2实际上是一个字符串键,不会被删除。
但是,如果您在不使用fromJS
的情况下构造它们,则Immutable.js支持具有整数键的映射:
Immutable.Map().set(1, Immutable.Map()).set(2, Immutable.Map()).delete(2)
=> Map { 1: Map {} }
deleteIn
删除键2,可以这样调用它:theFormerMap.deleteIn([2])
。 - gabrielf如果您使用不可变数据:
var immutableData = require("immutable-data")
var oldObj = {
1: {},
2: {}
}
var data = immutableData(oldObj)
var immutableObj = data.pick()
//modify immutableObj by ordinary javascript method
delete immutableObj[2]
var newObj = immutableObj.valueOf()
console.log(newObj) // { '1': {} }
console.log(newObj===oldObj) // [ { a: '2', b: '2' } ]
console.log(newObj[1]===oldObj[1]) // true