다음과 같은 일부 애완 동물에 대한 데이터를 포함하는 중첩된 개체가 있다고 가정합니다.
const pets = { owner1: 'Frank', owner2: 'Curly', owner3: 'Maurice', dogs: { terriers: { name1: 'Fido', name2: 'Woofy', name3: { goodDog: 'Frank', badDog: 'Judas', } }, poodles: { name1: 'Curly', name2: 'Fido', }, }, };
우리는 그러한 객체를 취하는 JavaScript 함수를 작성해야 합니다.
함수는 개체에 존재하는 모든 중복 값을 찾은 다음 개체의 모든 중복 값이 포함된 배열을 반환해야 합니다.
따라서 이 개체의 경우 출력은 -
여야 합니다.const output = ['Frank', 'Curly', 'Fido'];
예시
이에 대한 코드는 -
const pets = { owner1: 'Frank', owner2: 'Curly', owner3: 'Maurice', dogs: { terriers: { name1: 'Fido', name2: 'Woofy', name3: { goodDog: 'Frank', badDog: 'Judas', } }, poodles: { name1: 'Curly', name2: 'Fido', }, }, }; const recursiveSearch = (obj, map = {}, res = []) => { Object.keys(obj).forEach(key => { if(typeof obj[key] === "object"){ return recursiveSearch(obj[key], map, res); }; map[obj[key]] = (map[obj[key]] || 0) + 1; if(map[obj[key]] === 2){ res.push(obj[key]); } }); return res; }; console.log(recursiveSearch(pets));
출력
콘솔의 출력은 -
[ 'Frank', 'Curly', 'Fido' ]