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

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

不言
發布: 2019-02-25 10:29:53
轉載
2998 人瀏覽過

這篇文章帶給大家的內容是關於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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板