Object.assign()方法不能合并深层次对象

我们只知道Object.assign()方法能合并对象,已存在键的会对其进行更新,不存在的会新增并合并生成一个新对象
但是 Object.assign()方法合并只适用于单层对象
多层对象并不适用
比如:单层对象

const _form = {
  site: "",
  type: "",
  author: "",
  bk: "",
  info: "",
  domain: "",
};

比如:多层对象

const _listQuery = {
  data: {
    key: "",
    qyid: "",
    type: "",
  },
  p: {
    page: 0,
    pageSize: 0,
    total: 0,
  },
};

举个例子:

var a = {a: {b: 1, c: 2}}
var b = {a: {b: 1, c:2},d:3}
var c=Object.assign(a, b)
console.log(c)

输出结果会是{ a: { b: 1, c: 2 } ,d:3}
而不是我们想要的这样的 { a: { x: 1,z:3, y: 2 },d:3 }
我们可以找个替代品来实现对象的深层合并(看别的大佬写的代码)

var _ = require("lodash");
var a = {a: {b: 1, c: 2}}
var b = {a: {b: 1, c:2},d:3}
console.log(_.merge(a, b));
console.log(a);

这样有个缺点:
就是Object.assign()方法是单层深拷贝
而这个方法是在a的值的基础上进行更改

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值