如何使用 JavaScript 比較兩個對象
比較兩個 JavaScript 對像以檢查它們是否具有相同的鍵值對:
- 使用
JSON.stringify()
將對象轉換為字符串,然後比較 JSON 字符串。 - 使用 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 對象、原型和類的更多信息,請閱讀本文。