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'));

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

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

このコードのコンソールでの出力は-

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

  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>