亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于JavaScript判斷兩個對象內容是否相等的案例

發布時間:2021-02-14 14:08:50 來源:億速云 閱讀:168 作者:小新 欄目:web開發

這篇文章主要介紹基于JavaScript判斷兩個對象內容是否相等的案例,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

ES6中有一個方法判斷兩個對象是否相等,這個方法判斷是兩個對象引用地址是否一致

let obj1= {
  a: 1
 }
 let obj2 = {
  a: 1
 }
console.log(Object.is(obj1, obj2)) // false

let obj3 = obj1
console.log(Object.is(obj1, obj3)) // trueconsole.log(Object.is(obj2, obj3)) // false

當需求是比較兩個對象內容是否一致時就沒用了。

想要比較兩個對象內容是否一致,思路是要遍歷對象的所有鍵名和鍵值是否都一致:

1、判斷兩個對象是否指向同一內存

2、使用Object.getOwnPropertyNames獲取對象所有鍵名數組

3、判斷兩個對象的鍵名數組是否相等

4、遍歷鍵名,判斷鍵值是否都相等

let obj1 = {
  a: 1,
  b: {
   c: 2
  }
 }
 let obj2 = {
  b: {
   c: 3
  },
  a: 1
 }
 function isObjectValueEqual(a, b) {
  // 判斷兩個對象是否指向同一內存,指向同一內存返回true
  if (a === b) return true
  // 獲取兩個對象鍵值數組
  let aProps = Object.getOwnPropertyNames(a)
  let bProps = Object.getOwnPropertyNames(b)
  // 判斷兩個對象鍵值數組長度是否一致,不一致返回false
  if (aProps.length !== bProps.length) return false
  // 遍歷對象的鍵值
  for (let prop in a) {
   // 判斷a的鍵值,在b中是否存在,不存在,返回false
   if (b.hasOwnProperty(prop)) {
    // 判斷a的鍵值是否為對象,是則遞歸,不是對象直接判斷鍵值是否相等,不相等返回false
    if (typeof a[prop] === 'object') {
     if (!isObjectValueEqual(a[prop], b[prop])) return false
    } else if (a[prop] !== b[prop]) {
     return false
    }
   } else {
    return false
   }
  }
  return true
 }
 console.log(isObjectValueEqual(obj1, obj2)) // false

以上是“基于JavaScript判斷兩個對象內容是否相等的案例”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

修文县| 香格里拉县| 墨脱县| 沙湾县| 清河县| 鱼台县| 云浮市| 元氏县| 崇明县| 上思县| 蕉岭县| 鄂温| 手游| 文成县| 奉新县| 英山县| 汨罗市| 安福县| 镇江市| 开原市| 济宁市| 余干县| 通河县| 东山县| 吉水县| 麻阳| 文化| 绥化市| 库车县| 大邑县| 来凤县| 南投市| 兖州市| 盘山县| 天峻县| 锡林郭勒盟| 内丘县| 科技| 遵义市| 武陟县| 淮滨县|