在 JavaScript 中使用递归获取对象键
javascriptweb developmentfront end technologyobject oriented programming更新于 2026/1/17 2:20:17
我们有一个对象,其他对象是其属性值,嵌套层数为 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 的更多信息:https://www.cainiaomax.com/javascript/

