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

use*_*130 0 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;
}
Run Code Online (Sandbox Code Playgroud)

Nin*_*olz 5

也许你改变了整个结构.我建议返回一个数组并在必要时进行连接.

function getElementNames(obj) {
    var result = [obj.name];
    if (obj.parent) {
        result = result.concat(getElementNames(obj.parent));
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)