這篇文章帶給大家的內容是關於JavaScript中比較兩個物件是否相等的方法,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
這是我在一次面試中,被面試官所提問的一道題
在這次面試題中
#相等:指的是物件的屬性個數值相等
有這樣兩個obj
let obj1 = { name:'李德华', age:18, price:NaN } let obj2 = { name:'张德华', age:18, price:NaN }
我能想到的一個方案
function compare(obj1,obj2){ if(Object.keys(obj1).length != Object.keys(obj2).length){ return false }else{ for(key in obj1){ if(obj2.hasOwnProperty(key)){ if( !Object.is(obj1[key],obj2[key])){ return false; } }else{ return false } } return true } }
由於obj沒有length,我只能透過Object.keys()轉換成陣列
#進入第二步,物件中的屬性在另一個obj中是否存在。此處使用了Object.hasOwnProperty() 僅對該物件中的屬性進行對比(避免obj繼承了父級的屬性)
承載第二步驟的基礎對屬性值進行比對。 ES6中Object.is()來避免NaN不等於自身的問題
#或使用 Underscore.js中的_.isEqual
#以上是JavaScript中比較兩個物件是否相等的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!