Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

ネストされたオブジェクトキーを再帰的に一覧表示するJavaScript


たとえば、他のオブジェクトがプロパティ値であるオブジェクトがあり、2〜3レベル以上にネストされているとします。

これがサンプルオブジェクトです-

const people = {
   Ram: {
      fullName: 'Ram Kumar',
      details: {
         age: 31,
         isEmployed: true
      }
   },
   Sourav: {
      fullName: 'Sourav Singh',
      details: {
         age: 22,
         isEmployed: false
      }
   },
   Jay: {
      fullName: 'Jay Grewal',
      details: {
         age: 26,
         isEmployed: true
      }
   }
}

私たちの仕事は、このオブジェクトと文字列を受け入れ、オブジェクト全体でその文字列をキーとして検索し、文字列と一致するすべてのキーの値を含む配列を返す関数を作成することです。

関数recursiveSearch()を呼び出しましょう。ネストを考えると、この状況に対処するには再帰が最も適切な方法です。

したがって、この関数recursiveSearch()の完全なコードは-

になります。

const people = {
   Ram: {
      fullName: 'Ram Kumar',
      details: {
         age: 31,
         isEmployed: true
      }
   },
   Sourav: {
      fullName: 'Sourav Singh',
      details: {
         age: 22,
         isEmployed: false
      }
   },
   Jay: {
      fullName: 'Jay Grewal',
      details: {
         age: 26,
         isEmployed: true
      }
   }
}
const recursiveSearch = (obj, searchKey, results = []) => {
   const r = results;
   Object.keys(obj).forEach(key => {
      const value = obj[key];
      if(key === searchKey && typeof value !== 'object'){
         r.push(value);
      }else if(typeof value === 'object'){
         recursiveSearch(value, searchKey, r);
      }
   });
   return r;
};
console.log(recursiveSearch(people, 'age'));

出力

コンソールの出力は-

になります
[ 31, 22, 26 ]

上記の関数では、最初にメインオブジェクトを反復処理し、ネストに遭遇するたびに、目的のキーのサブオブジェクト検索を再帰的に反復処理します。目的のキーが見つかった場合は、すぐにその値を結果配列に記録します。最後に繰り返し処理を終えると、目的の値を含む結果配列が返されます。

この関数の時間計算量はO(mn)です。ここで、はメインオブジェクト内の子オブジェクトの数であり、mはネストの最も深いレベルです。


  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のObject.keys()。map()VS Array.map()

    以下は、JavaScriptでObject.keys()。map()とArray.map()を示すコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title>