下面的代码有一个主要缺陷。每次递归工作(即多次调用函数)时,它都会因为 var result = [] 表达式而覆盖数组。那么,避免这种情况的最佳方法是什么。我真的不想将结果变量放在函数范围之外。我正在寻找的是最佳实践和更好的方法。
function getElementNames(obj){
//below line overwrites the previous result every time this function runs
var result = [];
if(!obj.parent){
result.push(obj.name);
}
else {
result.push(obj.name);
getElementNames(obj['parent'])
}
return result;
}
最佳答案
也许你稍微改变一下整个结构。我建议返回一个数组并在必要时进行连接。
function getElementNames(obj) {
var result = [obj.name];
if (obj.parent) {
result = result.concat(getElementNames(obj.parent));
}
return result;
}
关于javascript - 使用递归从函数返回数组的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33398862/