首頁  >  文章  >  web前端  >  JavaScript中比較兩個物件是否相等的方法

JavaScript中比較兩個物件是否相等的方法

不言
不言轉載
2019-02-25 10:29:532954瀏覽

這篇文章帶給大家的內容是關於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中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除