当一个对象在 JavaScript 中有额外的键时,比较 JSON 对象中的键和值

javascriptjsonweb developmentfront end technologyobject oriented programming

假设我们有两个像这样的 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

相关文章