吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2106|回复: 3
收起左侧

[求助] JS 两个对象的深度比较,并返回不同部分

[复制链接]
cqwcns 发表于 2019-12-24 16:52
吾友大家好,有两个JS对象,我希望进行比较,并返回不同的部分,大家有什么好的写法,指教一下,感谢

[JavaScript] 纯文本查看 复制代码
var array1={a1:"a1的值",a2:"a2val",a3:{b1:"b1val",b2:{c1:"c1的值"}}};

var array2={a1:"a1的第二个值",a2:"a2val1",a3:{b1:"b1val",b2:{c1:"c1的第二个值"}},a4:"a4val"};

	

//希望比较后返回两个对象不同的部分,例如:{a1:"a1的第二个值",a3:{b2:{c1:"c1的第二个值"}},a4:"a4val"}

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
javafu159357 + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

a952135763 发表于 2019-12-24 17:24
不要说了  直接遍历 对象判断就行了  复杂度又不高
juedi998 发表于 2019-12-24 17:45
直接遍历不就完事了,非要折腾,可以看看能不能通过set来搞
 楼主| cqwcns 发表于 2019-12-25 13:09
已解决,分享代码:
[JavaScript] 纯文本查看 复制代码
function funDifference(object, other) {
	let diff = {};
	let vChildren;
	for (var key in object) {
		if (typeof object[key] === "object" && typeof other[key] === "object" && object[key] && other[key]) {
			vChildren = funDifference(object[key], other[key]);
			if (Object.keys(vChildren).length > 0) {
				diff[key] = vChildren;
			}


		} else if (object[key] !== other[key]) {
			diff[key] = object[key];

		}
	}
	return diff;
}

免费评分

参与人数 1热心值 +1 收起 理由
peng19920604 + 1 我很赞同!

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 22:43

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表