javascript - 使用递归从函数返回数组的最佳方法是什么

标签 javascript algorithm recursion

下面的代码有一个主要缺陷。每次递归工作(即多次调用函数)时,它都会因为 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/

相关文章:

algorithm - 构建一棵树

javascript - 这是不是递归

haskell - 为什么 GHC 在这里推断出单态类型,即使禁用了 MonomorphismRestriction?

javascript - Rails 部署时 Jquery 文件上传功能不起作用

java - 时间复杂度为 O(n) 的 N-queen 的解释?

javascript - 固定标题表 CSS 和 Javascript

algorithm - 树中内部节点数的证明

javascript - 为什么JS中递归比迭代快?

javascript - jquery去除循环动画

javascript - 无法从模型中发出数组中的现有属性