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