Immutable
创建数据的方式
const map = immutable.Map({ a : 1, b : 2, c : { f : 5 } }) const map = immutable.fromJS({ a:1, b:2, c:3, d : { f : 4 } })
const list = immutable.List( [1,2,3,4,[1,2]] )
//两种方式的不同在于map list只能创建一层的immutable对象结构 如果使用fromJS可以进行深层次的immutable数据转换
数据转换
list.toJS() // 转为js结构
immutable.fromJS(obj) // 转为immutable结构
对比两个immutable对象是否相等(对象下如果还有对象元素,必须也为immutable对象结构才会返回false)
const map = immutable.Map({a : 1,b : 2}); const map1 = map.update("a",()=>x=10); console.log(immutable.is(map1,map))//false //对比两个immutable如果相同返回true,不同则返回false
增删改查
const map = immutable.fromJS({ a : 1, b : 2, c : [1,2,3], f : { a : 1 } })
//set和setIn都可以增加,但是setIn可以增加多层
// 增
map.set("d",10)
map.setIn(["d" , "sex"],"男")
//删
map.delete("a")
map.deleteIn(["c",0])
// 改
map.update("a",(x)=>x=3)
map.updateIn(["c",0],(x)=>x=10)
//查
map.get("a")
map.getIn(["c",0])
合并,查看长度
/合并 const list1 = immutable.fromJS([1,2,[1,2]]); const list2 = immutable.fromJS([7,8,[1,3]]); const newList =list1.merge(list2) console.log(newList)//List [ 1, 2, List [ 1, 2 ], 7, 8, List [ 1, 3 ] ] const list1 = immutable.fromJS([1,2,[1,2]]); const list2 = immutable.fromJS([7,8,[1,3]]); const newList =list1.merge(list2) const map = immutable.fromJS({a:1,b:2}) //查看长度 console.log(map.size)//2 console.log(newList.count())//6
***