标题 : “ @ corex/ depmerge ” 自定义 edit url:'https://github.com/iamvishnusankar/corex/edit/master/packages/deepmerge/README.md' 互联网档案馆的存檔,存档日期2013-12-02
零依赖对象并用打字符支持并用普通的并用设施来构建. 支持将对象数n合并
安装
yarn add @corex/deepmerge
使用量
import { merge } from '@corex/deepmerge'
merge([obj1, obj2, obj3], { options })
合并选项
| 属性 | 默认 | 说明 |
|---|---|---|
| 阵列元件 | combine | 通过收缩合并两个阵列并去除重复. 可用的选项是 combine, (中文(简体) ), overwrite |
| 数组 | - 说吧 | 自定义合并函数处理数组合并 . |
简单对象合并
const obj1 = {
a: 1,
b: {
c: 2,
},
}
const obj2 = {
a: 2,
b: {
c: 4,
d: 5,
},
}
const result = merge([obj1, obj2])
console.log(result)
// {
// a: 2,
// b: {
// c: 4,
// d: 5,
// },
// }
组合合并
const arr1 = {
a: [1, 2, 3],
}
const arr2 = {
a: [3, 4, 5],
}
const result = merge([arr1, arr2])
console.log(result)
// result = {
// a: [1, 2, 3, 4, 5],
// }
复杂合并
const obj1 = {
a: 2,
b: (x: number, y: number) => x + y,
c: [1, 2, 4],
d: {
e: [4, 5, 7],
},
}
console.log(obj1.b(7, 5)) // ==> 12
const obj2 = {
a: 10,
b: (x: number, y: number) => x / y,
c: [20, 30],
d: {
e: [4, 7, 5],
f: {
g: 'another',
},
},
}
const obj3 = {
b: (x: number, y: number) => x * y,
c: [1, 2, 4],
d: {
e: [4, 7, 5],
},
}
const result = merge([obj1, obj2, obj3])
console.log(result.b(7, 5)) // ==> 35
组合合并类型
默认 @corex/deepmerge 合并。 然而,用户可以执行自己的方法来进行合并或使用在 overwrite。 。 。 .
覆盖合并
const obj1 = {
a: [1, 2, 3],
b: ['c', 'd'],
c: {
d: [1, 2],
},
}
const obj2 = {
a: [1, 7, 6],
b: ['e', 'f'],
c: {
d: [9, 10],
},
}
const obj3 = {
a: [20, 40],
}
const result = merge([obj1, obj2, obj3], {
arrayMergeType: 'overwrite',
})
console.log(result)
// result = {
// a: [20, 40],
// b: ['e', 'f'],
// c: {
// d: [9, 10],
// },
// }
自定义合并函数
const obj1 = {
a: ['1', '2'],
c: {
d: [1000, 500],
},
}
const obj2 = {
a: ['4', '5'],
c: {
d: [60, 80],
},
}
const customMergeFn = (_: any[], __: any[]) => 42
const result = merge([obj1, obj2], {
arrayMerge: customMergeFn,
})
console.log(result)
// {
// a: 42,
// c: {
// d: 42,
// },
// }