js 判斷兩個物件是否相等
阿新 • • 發佈:2021-10-11
最近碰到的一個面試題,不算高頻,記錄一下
判斷兩個物件是否相等,大致分為三步
- 首先判斷兩個比較物件是不是 Object
- 如果都是物件 再比較 物件的長度是否相等
- 如果兩個物件的長度相等 再比較物件屬性是否相等
function diff(obj1, obj2) { var o1 = obj1 instanceof Object; var o2 = obj2 instanceof Object; // 判斷是不是物件 if (!o1 || !o2) { return obj1 === obj2; } //Object.keys() 返回一個由物件的自身可列舉屬性(key值)組成的陣列, //例如:陣列返回下表:let arr = ["a", "b", "c"];console.log(Object.keys(arr))->0,1,2; if (Object.keys(obj1).length !== Object.keys(obj2).length) { return false; } for (var o in obj1) { // 遍歷物件 fon in 迴圈 o 為 物件的屬性名 var t1 = obj1[o] instanceof Object; var t2 = obj2[o] instanceof Object; if (t1 && t2) { return diff(obj1[o], obj2[o]); } else if (obj1[o] !== obj2[o]) { console.log('false') return false; } } return true; } var obj1 = { name: '1', age: '12', objs: { size: 'eee', value: '3' } } var obj2 = { age: '12', name: '1', objs: { size: 'eee', value: '2' } } let value = diff(obj1, obj2) console.log(value) // true 即 物件相等