예를 들어, 중첩된 객체를 받아들이고 모든 키가 동일한 값을 가지고 있는지 여부에 따라 부울을 반환하는 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