我正在尝试用Javascript编写一个递归函数,但显然我想念一些东西而且我不能让它在我想要的时候返回。 在下面的例子中,我希望在日志中看到baz = 18,但是baz未定义。
https://jsfiddle.net/n8fg1h3v/1/
有什么想法吗?
function foo(arr) {
if (arr[0]==7) {
return 18
} else {
arr = arr.slice(1,arr.length);
foo(arr);
}
}
var arr1 = [9,1,2,3,4,7,6];
var baz = foo(arr1);
console.log(baz)
答案 0 :(得分:4)
您需要在函数内部返回调用foo
。
return foo(arr);
function foo(arr) {
if (arr[0] == 7) {
return 18;
} else {
arr = arr.slice(1, arr.length);
return foo(arr);
}
}
var arr1 = [9, 1, 2, 3, 4, 7, 6];
var baz = foo(arr1);
console.log(baz)
答案 1 :(得分:0)
我会这样做:
function foo(arr) {
var el = arr.find(el => el === 7);
return el ? 18 : '7 was not found';
}
var bar = foo([9, 1, 2, 3, 4, 7, 6]);
console.log(bar);
var baz = foo([9, 1, 2, 3, 4, 8, 6]);
console.log(baz);