【发布时间】:2016-02-11 17:46:51
【问题描述】:
我需要遍历以下对象并将包括子作业在内的所有作业作为线性数组返回:
var o = {
id: 1,
subJobs: {
a: {
id: 2,
subJobs: {}
},
c: {
id: 3,
subJobs: {
b: {
id: 4,
subJobs: {}
}
}
}
}
}
这是我写的函数:
function parseSubJobs(job) {
var jobs = [];
if (Object.keys(job.subJobs).length > 0) {
for (var key in job.subJobs) {
var j = parseSubJobs(job.subJobs[key]);
Array.prototype.push.apply(jobs,j);
}
jobs.push(job);
return jobs;
}
return [job];
}
var parsed = parseSubJobs(o);
它工作正常,但在我看来,解决方案可以改进。我对递归不是很好,所以可以改进吗?
【问题讨论】:
-
如果您有工作代码,并且您只是在寻找优化帮助,那么您最适合前往codereview.stackexchange.com。我们在这里帮助修复损坏的代码,而不是(可能)错误的代码。
标签: javascript recursion