ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

js判断两个对象内容是否一致

2022-07-05 09:34:25  阅读:139  来源: 互联网

标签:false 对象 prop return let 一致 键值 js true


一、key-value顺序一致

直接将两个对象分别JSON.stringify转换成字符串后比较即可

let obj1 = {
age:21,
info: {name:'sunsir'}
}
let obj2 = {
age:21,
info: {name:'sunsir'}
}

console.log(JSON.stringify(obj1)===JSON.stringify(obj2)) //true

二、key-value顺序不一致

let obj1 = {
age:21,
info: {name:'sunsir'}
}
let obj2 = {
info: {name:'sunsir'},
age: 21
}
function isObjectValueEqual(a, b) {
// 判断两个对象是否指向同一内存,指向同一内存返回 true
if (a === b) return true // 获取两个对象键值数组
let aProps = Object.getOwnPropertyNames(a)
let bProps = Object.getOwnPropertyNames(b)
// 判断两个对象键值数组长度是否一致,不一致返回 false
if (aProps.length !== bProps.length) return false // 遍历对象的键值
for (let prop in a) {
// 判断 a 的键值,在 b 中是否存在,不存在,返回 false
if (b.hasOwnProperty(prop)) {
// 判断 a 的键值是否为对象,是则递归,不是对象直接判断键值是否相等,不相等返回 false
if (typeof a[prop] === 'object') {
if (!isObjectValueEqual(a[prop], b[prop])) return false
} else if (a[prop] !== b[prop]) {
return false
}
} else {
return false
}
}
return true
}
console.log(isObjectValueEqual(obj1, obj2)) // true

标签:false,对象,prop,return,let,一致,键值,js,true
来源: https://www.cnblogs.com/sun-shuaichao/p/16445196.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有