Javascript
 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',
      },
   },
};

そのようなオブジェクトを1つ取り込む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' ]

  1. JavaScriptを使用した配列内のネストされたオブジェクト値の合計

    以下は、JavaScriptを使用して配列内のネストされたオブジェクト値を合計するコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <st

  2. JavaScriptオブジェクトの値を動的に設定するにはどうすればよいですか?

    以下は、JavaScriptオブジェクトの値を動的に設定するためのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style>