# merge(target, [...source], [customizer], [ploy]) ⇒ Object
递归合并 source 来源对象自身和继承的可枚举属性到 object 目标对象
- 数组和普通对象会递归合并,其他对象和值会被直接分配覆盖
- 源对象从从左到右分配
- 后续的来源对象属性会覆盖之前分配的属性
- 该方法会改变目标对象 target
- source 对象字段值类型若与 target 对象字段值类型 不一致,由 source 覆盖前者,target 源数据将丢失
注意: 这个方法仅做深度合并,合并的是值的引用(直接赋值,而非拷贝),不会起到克隆的作用。因此参与合并的对象引用值皆可能在覆盖时被影响。
Kind: global function
Returns: Object
- 返回合并后的 object
Param | Type | Default | Description |
---|---|---|---|
target | Object | 目标对象 | |
[...source] | Object | 来源对象 | |
[customizer] | function |
| 自定义赋值逻辑的方法,每次比较将传入参数 customizer(target, key, newValue) |
[ploy] | Number | ARRAY_MERGE | 自定义合并策略(目前仅支持指定数组合并策略) |
Example
import {merge, ARRAY_REPLACE} from '@mudas/util';
var object = {
'a': [{ 'b': 2 }, { 'd': 4 }]
};
var other = {
'a': [{ 'c': 3 }, { 'e': 5 }]
};
merge(object, other);
// => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }
// use ploy
merge(object, other, ARRAY_REPLACE);
// => { 'a': [{ 'c': 3 }, { 'e': 5 }] }