im
生成 immutable 对象
API
set(obj, path: string | string[], value: any)
del(obj, path: string | string[])
push(obj, path: string | string[], value: any)
pop(obj, path: string | string[])
shift(obj, path: string | string[])
unshift(obj, path: string | string[], value: any)
reverse(obj, path: string | string[])
splice(obj, path: string | string[], i: number, count: number, ...items: any[])
sort(obj, path: string | string[], fn?: (a, b) => number)
assign(obj, path: string | string[], value)
merge(obj, path: string | string[], value)
例子
const obj = {
name: 'tom',
data: {
score: 100,
age: 20,
d: {
abc: 12,
},
},
info: {
a: 1,
list: [1, 2, 3, 4, 5],
},
}
const obj2 = set(obj, 'data.age', 30)
obj2 === obj
obj2.name === 'tom'
obj2.data === obj.data
obj2.data.score === 1000
obj2.data.age === 30
obj2.data.d === obj.data.d
obj2.info === obj.info
const obj3 = del(obj, 'data.name')
obj3 === obj
obj3.delete === undefined
obj3.data === obj.data
obj3.data.d === obj.data.d
obj3.info === obj.info
const a = { a: 2, b: 3 }
const obj4 = assign(obj, 'info', a)
obj4 === obj
obj4.name === 'tom'
obj4.data === obj.data
obj4.info === obj.info
obj4.info.a === 2
obj4.info.b === 3
obj4.list = obj.info.list
const b = {
gender: 'male',
data: {
age: 30,
abc: 999,
},
tree: [123],
}
const obj5 = merge(obj, b)
obj5 === obj
obj5.name === 'tom'
obj5.gender === 'male'
obj5.data === obj.data
obj5.data.d === obj.data.d
obj5.data.score === 100
obj5.data.age === 30
obj5.data.abc === 999