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

***

原文地址:https://www.cnblogs.com/jingguorui/p/14075398.html