js中对象合并的几种方法
Es6中的对象新增方法: Object.assign()
1、基本用法:
Object.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)。
const obj1 = {
a: 1
}
const obj2 = {
b: 2
}
Object.assign(obj1, obj2)
console.log(obj1); // { a: 1, b: 2 }
- 这样确实可以合并两个不同的对象,但是,下面的代码却没有出现预期的效果.
const obj1 = {
id: 1,
name: 'james'
}
const obj2 = {
id: 2,
name: 'curry'
}
Object.assign(obj1, obj2, obj2)
console.log(obj1);
- 最后输出的结果是
{ id: 2, name: 'curry' }
- 只有obj2对象,也就是说 obj1对象被覆盖了, 原因是Object.assign()规定如果合并的对象有一个或者多个同名的属性,那么后面的对象将覆盖前面的对象.
lodash中的merge()方法
const _ = require('lodash')
const obj1 = {
a: 1
}
const obj2 = {
b: 2
}
_.merge(obj1, obj2)
console.log(obj1); // { a: 1, b: 2 }
- 同样的,如果对象中有一个或者多个一样的属性,那么,后面的对象将覆盖前面的对象.