JavaScript中如何比較兩個(gè)對(duì)象是否相等

這篇文章給大家分享的是有關(guān)JavaScript中如何比較兩個(gè)對(duì)象是否相等的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧。

青白江ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書(shū)銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書(shū)合作)期待與您的合作!

這是我在一次面試中,被面試官所提問(wèn)的一道題

在這次面試題中

相等:指的是對(duì)象的屬性個(gè)數(shù)值相等

有這樣兩個(gè)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
    }
}

解答過(guò)程的思考

  • 由于obj沒(méi)有l(wèi)ength,我只能通過(guò)Object.keys()轉(zhuǎn)化成數(shù)組

  • 進(jìn)入第二步,對(duì)象中的屬性在另一個(gè)obj中是否存在。此處使用了Object.hasOwnProperty() 僅對(duì)該對(duì)象中的屬性進(jìn)行對(duì)比(避免obj繼承了父級(jí)的屬性)

  • 承載第二步的基礎(chǔ)對(duì)屬性值進(jìn)行比對(duì)。ES6中Object.is()來(lái)避免出現(xiàn)NaN不等于自身的問(wèn)題

或者使用 Underscore.js中的_.isEqual

感謝各位的閱讀!關(guān)于JavaScript中如何比較兩個(gè)對(duì)象是否相等就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

網(wǎng)站欄目:JavaScript中如何比較兩個(gè)對(duì)象是否相等
標(biāo)題鏈接:http://bm7419.com/article6/ijheog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、移動(dòng)網(wǎng)站建設(shè)用戶體驗(yàn)、電子商務(wù)、搜索引擎優(yōu)化、營(yíng)銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司