中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

沁源县| 广河县| 彭阳县| 尤溪县| 扎鲁特旗| 新巴尔虎左旗| 格尔木市| 美姑县| 玉门市| 梓潼县| 财经| 长丰县| 区。| 广平县| 惠安县| 任丘市| 天镇县| 句容市| 南靖县| 来宾市| 德庆县| 陆良县| 南漳县| 桦南县| 屏边| 双牌县| 托克托县| 灵宝市| 新竹县| 宽甸| 绩溪县| 北川| 阜南县| 丁青县| 原平市| 洛宁县| 蕲春县| 望都县| 乐业县| 加查县| 红河县|