问题描述: 比较两个对象是否相等
1. 通过JSON.stringify()对比
例: let o1 = {a: 1, b: 2} o2 = {a: 1, b: 2}
function isEqual (o1, o2){
return JSON.stringify(o1) === JSON.stringify(o2)
}
优点:方便简单
缺点: 当对象内元素值顺便不同时,得出的结果错误
let o3 = {b: 2, a: 1}
isEqual (o1, o3) // false
2. 遍历对象对没个元素的值进行对比
function isEqual(o1, o2) {
let o1Keys = Object.getOwnPropetyNames(o1)
let o2Keys = Object.getOwnPropetyNames(o2)
if(o1Keys.length !== o2Keys.length ) {
return false
}
for(let i = 0; i < o1Keys.length; i ++ ) {
if(o1[o1Keys[i]] !== o2[o2Keys[i]] ) {
return false
}
}
return true
}