【发布时间】:2017-09-07 09:27:30
【问题描述】:
function isNumber(arr) {
var result = [];
if (arr.length > 1) {
if (typeof arr[0] === 'number') {
result.push(arr[0]);
arr.splice(0, 1);
isNumber(arr);
} else {
arr.splice(0, 1);
isNumber(arr);
}
} else {
console.log(result);
}
}
isNumber([1,'2','3',2]);
我正在尝试创建一个遍历数组的函数,如果第一项是数字,它将删除它并将其推送到名为 result 的数组中。然后它再次调用自己,直到数组为空。
它当前返回一个空数组,调试器显示结果数组不断重置回一个空数组。
我明白为什么会发生这种情况,但我正试图弄清楚如何解决它。
【问题讨论】:
-
每次调用都会丢失结果,但不会返回。
-
您必须将结果数组作为参数传递。你的
arr.length > 1应该是arr.lenght > 0 -
这个例子的真正问题是使用递归是没有意义的。一个简单的 for 循环就可以了。
-
@kevinSpaceyIsKeyserSöze:不应该 >= 1 吗?如果它 >= 0 则在检索 arr[0] 时会出错
-
如果最终目标是学习递归......去斐波那契......这对递归来说真的没有意义
标签: javascript arrays recursion