let a= {
id:1,
hobby:[1,3]
}
let b= {
id:1,
hobby:[1,2,3]
}
js怎么去判断 a 和 b 是否相等 ,对象中 的 value 可能是字符串,数组 对象等
let a= {
id:1,
hobby:[1,3]
}
let b= {
id:1,
hobby:[1,2,3]
}
js怎么去判断 a 和 b 是否相等 ,对象中 的 value 可能是字符串,数组 对象等
首先JSON.stringify
是不可能的,其次这种经典问题到处都能找到。object-comparison-in-javascript
x = {a: 1, b: 2};
y = {b: 2, a: 1};
JSON.stringify(x)===JSON.stringify(y); //false
let a= {
id:1,
hobby:[1,2,3]
}
let b = {
hobby:[1,2,3],
id:1,
}
function keySort(target){
const newObj = {}
Object.keys(target).sort().map(key => newObj[key] = target[key])
return newObj
}
console.log(JSON.stringify(keySort(a)) === JSON.stringify(keySort(b))) // true
为啥要喷JSON.stringify,不支持排序不能把它排了再拿出来用吗(手动狗头)
10 回答11.2k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
JavaScript专题之如何判断两个对象相等
文章中解释的很详细,直接用了他最终的 eq 函数可以实现比较。
以下代码是原文中最终的 eq 函数代码:
使用:
看了其他人的几个回答,感觉这篇文章里的这个方法真的是很强大的了。
也顺便学习了下。
^_^