我正在练习使用递归函数来解决一些简单的javascript问题。
我遇到了以下代码的问题,
var locate = function(arr,value){
for (var i=0; i <arr.length; i++) {
if(typeof arr[i]=== "string") {
console.log("string is string");
if(arr[i]=== value) {
console.log("This should be true");
return true;
}
}
else {
locate(arr[i], value);
}
}
}
console.log(locate(['d', 'a',['e', 'g']], 'e'));
我无法让这个程序返回true。它到达代码的正确部分,因为它打印上面的语句。
任何帮助将不胜感激。我现在已经开了几个小时了。
Edit- @ Matt Burland指出在调用递归时需要包含一个return语句。
答案 0 :(得分:2)
当您递归时,您需要在展开时返回递归调用返回的值。
因此,在else
条款中,您需要:
return locate(arr[i], value);
var locate = function(arr,value){
for (var i=0; i <arr.length; i++) {
if(typeof arr[i]=== "string") {
console.log("string is string");
if(arr[i]=== value) {
console.log("This should be true");
return true;
}
}
else {
return locate(arr[i], value);
}
}
}
alert(locate(['d', 'a',['e', 'g']], 'e'));