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

JavaScript에서 객체의 모든 속성이 재귀적으로 동일한지 확인하는 방법은 무엇입니까?

<시간/>

예를 들어, 중첩된 객체를 받아들이고 모든 키가 동일한 값을 가지고 있는지 여부에 따라 부울을 반환하는 isSame()과 같은 함수를 작성해야 한다고 가정해 보겠습니다. 모든 키를 말할 때 우리는 다음과 같은 모든 마지막 키를 의미합니다. 키의 값으로 중첩된 개체가 있는 경우 중첩된 개체의 끝으로 이동하여 해당 값을 확인해야 합니다.

예를 들어 - 개체가 -

인 경우
const obj = {
   a: 1,
   b: 1,
   c: {
      aa: 1
   }
};

그런 다음 모든 종료 키가 동일한 값(1)을 가지므로 함수는 true를 반환해야 합니다. 따라서 이 문제에 대한 재귀 솔루션을 작성해 보겠습니다.

예시

const obj = {
   a: 1,
   b: 1,
   c: {
      aa: 3
   }
};
const allSame = (obj, value) => {
   const keys = Object.keys(obj);
   for(let i = 0; i < keys.length; i++){
      if(typeof obj[keys[i]] === "object" &&
      !Array.isArray(obj[keys[i]])){
         return allSame(obj[keys[i]], value);
      };
      if(!value){
         value = obj[keys[i]];
         continue;
      }
      if(obj[keys[i]] !== value){
         return false;
      };
   };
   return true;
}
console.log(allSame(obj));
console.log(allSame({ a: 1, b: 1, c: { aa: 1 } }));
console.log(allSame({ a: { x: 1 }, b: 1, c: { aa: 1 } }));
console.log(allSame({ a: 1, b: 1, c: { aa: 2 } }));

출력

콘솔의 출력은 -

false
true
true
false