如何比较两个对象是否相等?
在JS中如果是值类型,可以使用 === 号来判断是否相等。而引用类型比较的是他们引用,因此不能直接用 === 来判断,下面介绍几种判断方法。
const obj = {name: 'xiaoming', age: [18, 24]}
const obj2 = {name: 'xiaoming', age: [18, 24]}
console.log('打印', obj === obj2) // false 这里 === 比较的是他们的引用
方法一:JSON.stringify()
将对象用Json.stringify()方法转换成字符串类型,然后用 === 来比较。(这种比较方法不严谨,如果两个对象键值对的顺序不相同则无法直接用这种方式判断)
const obj1 = {name: 'xiaoming', age: [18, 24]}
const obj2 = {name: 'xiaoming', age: [18, 24]}
const obj3 = {age: [18, 24], name: 'xiaoming'}
const res1 = JSON.stringify(obj1)
const res2 = JSON.stringify(obj2)
const res3 = JSON.stringify(obj3)
console.log('打印', res1 === res2) // true
console.log('打印', res1 === res3) // false 调换健值对顺序后的比较结果
方法二:需要递归解决循环引用比较麻烦、后续抽时间更新