出于好奇,是否可以在递归迭代中返回数组的元素?

var index = 0;
function iterArray(arr){
    if(arr && index <= arr.length ){
        console.log(arr[index]); //Wanted to return this value instead calling any function here
        index++
        iterArray(arr)
    }
}


注意:-上面的代码不会按我的期望执行。,但是我希望它应该在arr.pop的情况下工作。喜欢:

k = ["a", "b", "c"];
ret1 = iterArray(k);
ret2 = iterArray(k);
ret3 = iterArray(k);
console.log(ret1, ret2, ret3)//"a", "b", "c"

最佳答案

Array.pop不需要递归实现。

但是,如果这是一个普遍的问题-我会想到一些ECMAScript 6生成器。

function* iterArray(arr, idx) {
  yield arr[idx];
  yield* iterArray(arr, ++idx);
}

var arr = [1,2,3];

var g = iterArray (arr, 0);
console.log(g.next().value);
console.log(g.next().value);
console.log(g.next().value);


使用生成器很容易,但是要在ES5环境中做类似的事情-您需要转译此代码,或手动实现类似的机制。

附注:我用babel进行了翻译。

09-25 18:49