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>