多个对象合并的3种的简单方式,替换同key名的值

使用场景: 两个或多个对象需要合并,并且有相同的key时,用后面对象的value值
方法1: Object.assign(obj1, obj2)
这个方法是浅拷贝,则拷贝了对象的引用(也就是修改的话会影响到原对象)
特点: 若属性名相同,后面的属性会覆盖前面属性,对象和数组合并,数组会被转成对象,再被合并

const a = {
    name: 'Aimee',
    age: '19',
    phone: '18888888888'
}
const b = {
    name: 'lisa',
    age: '26',
    like: '13232231',
    objSon: {
        aaa: 'aaaaaa',
        bbb: 'bbbbbbb'
    }
}
const list = ['one', 'two', 'three']
const data = Object.assign(a, b)
console.log(data)
// 输出结果:{
//     name: 'lisa',
//     age: '26',
//     like: '13232231',
//     objSon: { aaa: 'aaaaaa', bbb: 'bbbbbbb' }
//   }
console.log(Object.assign(a, list))
// 输出结果:{
//     '0': 'one',
//     '1': 'two',
//     '2': 'three',
//     name: 'lisa',
//     age: '26',
//     like: '13232231',
//     objSon: { aaa: 'aaaaaa', bbb: 'bbbbbbb' }
//   }

方法2: 利用扩展运算符{…a, …b}
特点: 该方法不会改变对象a,不会改变对象b

// An highlighted block
const data2 = {...a, ...b}
console.log(data2)
// 输出:{
//     name: 'lisa',
//     age: '26',
//     like: '13232231',
//     objSon: { aaa: 'aaaaaa', bbb: 'bbbbbbb' }
//   }

方法3: _.merge(object, [sources])
如果要用深拷贝的小伙伴可以用lodash第三方库(https://www.lodashjs.com/docs/lodash.merge)
特点: 这方法会改变对象 object, 不会改变[sources],sources里面的子对象也可以被拷贝到

// An highlighted block
 let data3 = _.merge(a, b)
 console.log(data3)
 // 输出:{
//     name: 'lisa',
//     age: '26',
//     like: '13232231',
//     objSon: { aaa: 'aaaaaa', bbb: 'bbbbbbb' }
//   }

当然,自己手写函数也可以

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值