在 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