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

중첩된 JavaScript 개체의 모든 중복 값 나열

<시간/>

다음과 같은 일부 애완 동물에 대한 데이터를 포함하는 중첩된 개체가 있다고 가정합니다.

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' ]