在 JavaScript 中比較兩個 JSON 物件中的鍵和值,其中一個物件具有額外的鍵
假設我們有兩個這樣的 JSON 物件 −
const obj1 = {a: "apple", b: "banana", c: "carrot"};
const obj2 = {a: "apple", e: "egg", b: "banana", c: "carrot", d: "dog"};我們需要編寫一個 JavaScript 函式,該函式接受兩個這樣的物件。我們希望能夠進行布林值檢查,比較這兩個物件,而不必從任何一個物件中刪除資料。
例如,如果我使用上面的資料,布林值檢查應返回 true,因為兩個物件中的鍵的值匹配。
然而,假設 obj1 保持不變,但 obj2 如下 −
const obj1 = {a: "apple", b: "banana", c: "carrot"}
const obj2 = {a: "ant", e: "egg", b: "banana", c: "carrot", d: "dog"}對於此資料,它應返回 false,因為即使其他欄位匹配且有些欄位不在兩個物件中,但鍵的值也不匹配。
示例
程式碼如下 −
const obj1 = {
a: "apple",
b: "banana",
c: "carrot"
}
const obj2 = {
a: "apple",
b: "banana",
c: "carrot",
d: "dog",
e: "egg"
}
const obj3 = {a: "apple", b: "banana", c: "carrot"}
const obj4 = {a: "ant", e: "egg" ,b: "banana", c: "carrot", d: "dog"}
function checkEquality(a, b) {
const entries1 = Object.entries(a);
const entries2 = Object.entries(b);
const short = entries1.length > entries2 ? entries2 : entries1;
const long = short === entries1 ? b : a;
const isEqual = short.every(([k, v]) => long[k] === v);
return isEqual;
}
console.log(checkEquality(obj1, obj2))
console.log(checkEquality(obj3, obj4))輸出
控制檯中的輸出如下 −
true false
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP