合并对象 深层合并两个层级很深的对象 js

如果只有一层也可以通过object.assign(last, before)进行合并
last是合并后的对象

在这里插入图片描述

let last = {
	id: 0, 
	name: 'last', 
	color: 'red'
};
let before = {
	name: 'before', 
	next: 'nextKey'
};
Object.assign(last, before);
/**
 *  深层合并两个对象
 * @param firstObject secondObject 两个object,不限制对象层级
 * @return newObject 深层合并后的新对象
 */
export function $deepObjectMerge(firstObject, secondObject) {
  for (var key in secondObject) {
    firstObject[key] = firstObject[key] && Object.prototype.toString.call(firstObject[key]) === "[object Object]" ?
    $deepObjectMerge(firstObject[key], secondObject[key]) : secondObject[key];
  }
  return firstObject;
}

测试

在这里插入图片描述

测试代码

let a = {
	name: 'aaa', 
	line: {
		show: false, 
		color: 'red'
		}
	};
let b = {
	id: 2, 
	line: {
		show: true, 
		name: 'bbb'
		}
	};
function $deepObjectMerge(firstObject, secondObject) {
  for (var key in secondObject) {
    firstObject[key] = firstObject[key] && Object.prototype.toString.call(firstObject[key]) === "[object Object]" ?
    $deepObjectMerge(firstObject[key], secondObject[key]) : secondObject[key];
  }
  return firstObject;
};
console.log(a, b, $deepObjectMerge(a, b));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人间清醒小仙女

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值