JavaScript >> Javascript 文檔 >  >> Tags >> object

如何使用 JavaScript 比較兩個對象

比較兩個 JavaScript 對像以檢查它們是否具有相同的鍵值對:

  1. 使用JSON.stringify() 將對象轉換為字符串,然後比較 JSON 字符串。
  2. 使用 Lodash,一個 3rd 方庫,isEqual() 在對象之間進行深度比較。

與 JavaScript 數組比較不同,您不能使用 ===== 運算符來執行對像比較。這是因為對像是 JavaScript 中的引用類型,並且只指向存儲它們的內存位置。

JSON.stringify() 方法

比較兩個對象的最快和最簡單的方法是使用 JSON.stringify() 將它們轉換為字符串 方法,然後使用比較運算符檢查兩個字符串是否相等:

const obj1 = { burger: '🍔', pizza: '🍕' };
const obj2 = { burger: '🍔', pizza: '🍕' };

// compare objects
if (JSON.stringify(obj1) === JSON.stringify(obj2)) {
    console.log('Objects are equal!');
} else {
    console.log('Objects are not equal.');
}

// Objects are equal!

此方法僅適用於鍵值對具有相同順序 .如果兩個對像中的鍵值對排列不同但相同,則該方法將返回false

const obj1 = { burger: '🍔', pizza: '🍕' };
const obj2 = { pizza: '🍕', burger: '🍔' };

// compare objects
if (JSON.stringify(obj1) === JSON.stringify(obj2)) {
    console.log('Objects are equal!');
} else {
    console.log('Objects are not equal.');
}

// Objects are not equal.

對於具有任意鍵值對順序的對象,您應該考慮使用 Lodash 的 isEqual() 方法。

Lodash isEqual() 方法

isEqual() Lodash 的方法在兩個對象之間進行深度比較以確定它們是否相等。鍵值對順序對於此方法無關緊要。它將返回 true 只要鍵值對存在並且相同。你甚至可以使用這個方法來比較數組、字符串、日期、布爾值、數組緩衝區等。

這是一個例子:

const _ = require('lodash');

const obj1 = { burger: '🍔', pizza: '🍕' };
const obj2 = { pizza: '🍕', burger: '🍔' };

if (_.isEqual(obj1, obj2)) {
    console.log('Objects are equal!');
} else {
    console.log('Objects are not equal.');
}

// Objects are equal!

要了解有關 JavaScript 對象、原型和類的更多信息,請閱讀本文。


Tutorial JavaScript 教程
  1. 什麼披薩🍕

  2. Angular 2 中使用 @Output() 的組件事件綁定

  3. 我可以使用 jQuery 找到綁定在元素上的事件嗎?

  4. 如何在 HTML5 畫布上繪製貝塞爾曲線

  5. 如何在 Node.js 中處理文件上傳

  6. JavaScript:將對像數組映射到字典

  7. 在 Node.js 中使用 ES6 導入

  1. JavaScript 按箭頭函數排序值

  2. i18n-editor的創建和歷史

  3. Node.js MySQL 教程:使用 Express js REST API 的分步入門指南

  4. 不要使該功能異步。

  5. 主流媒體的真相

  6. 唐納德特朗普討厭它:使用微前端的分佈式開發

  7. 在 JavaScript 中迭代數組的 6 種方法

  1. 鼠標懸停的 IMDB 評級 - II

  2. 使用 SVG 的最佳實踐

  3. 在 React 中處理警報對話框的最簡潔方法🥰

  4. 了解跨站請求偽造(CSRF 或 XSRF)