91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

基于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

孝昌县| 葫芦岛市| 东光县| 清原| 西乌珠穆沁旗| 根河市| 临安市| 安达市| 肇庆市| 福清市| 侯马市| 清河县| 夹江县| 临泉县| 五家渠市| 喀喇| 上犹县| 时尚| 芦溪县| 建德市| 丰都县| 泗洪县| 特克斯县| 柳州市| 卢龙县| 江源县| 广汉市| 忻州市| 伊川县| 南部县| 田东县| 商河县| 三门峡市| 合作市| 类乌齐县| 喀喇| 那坡县| 肥西县| 藁城市| 博罗县| 伊春市|