出于好奇,是否可以在递归迭代中返回数组的元素?
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进行了翻译。