@hippie/im
v0.1.1
Published
generate immutable data
Downloads
2
Readme
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 // false
obj2.name === 'tom' // true
obj2.data === obj.data // false
obj2.data.score === 1000 // true
obj2.data.age === 30 // true
obj2.data.d === obj.data.d // true
obj2.info === obj.info // true
const obj3 = del(obj, 'data.name')
obj3 === obj // false
obj3.delete === undefined // true
obj3.data === obj.data // true
obj3.data.d === obj.data.d // true
obj3.info === obj.info // true
const a = { a: 2, b: 3 }
const obj4 = assign(obj, 'info', a)
obj4 === obj // false
obj4.name === 'tom' // true
obj4.data === obj.data // true
obj4.info === obj.info // false
obj4.info.a === 2 // true
obj4.info.b === 3 // true
obj4.list = obj.info.list // true
const b = {
gender: 'male',
data: {
age: 30,
abc: 999,
},
tree: [123],
}
const obj5 = merge(obj, b)
obj5 === obj // false
obj5.name === 'tom' // true
obj5.gender === 'male' // true
obj5.data === obj.data //false
obj5.data.d === obj.data.d // true
obj5.data.score === 100 // true
obj5.data.age === 30 // true
obj5.data.abc === 999 // true