Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

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