1
我需要遍历下列对象,并返回所有工作,包括子作业线性阵列:递归函数来遍历对象
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);
它行得通,但在我看来,解决方案可以改进。递归不太好,所以可以改进?
如果你有工作代码,你只是在寻找优化的帮助,你是最适合的标题到http://codereview.stackexchange.com/。我们帮助修复了破碎的代码,而不是(可能)错误的代码。 – Oka
@哦,好的,谢谢 –