我知道有更好的方法来搜索数组,但是我真的想了解在递归调用中找到值时如何返回。发现时记录日志不是问题,但是发现时似乎无法使此返回为真。
问题是基本的。使用for循环和递归,在多维数组中完全搜索一个值,如果找到则返回true,否则返回false。我尝试过返回递归函数以及我能想到的所有其他功能,但是没有什么能完全起作用。
function lookForKey( arr ){
for ( let i = 0; i < arr.length; i++ ) {
if( arr[i] == "key" ){
console.log( "Key found.");
return true;
} else if( Array.isArray( arr[i] ) ){
lookForKey( arr[i] );
}
}
return false;
}
let arr = [
["foo", "bar"],
["foo", "bar", "key"]
];
console.log( lookForKey( arr ) );
我对此表示感谢!
function lookForKey( arr ){
for ( let i = 0; i < arr.length; i++ ) {
if( arr[i] == "key" ){
console.log( "Key found.");
return true;
} else if( Array.isArray( arr[i] ) ){
if (lookForKey(arr[i])) return true;
}
}
return false;
}
let arr = [
["foo", "bar"],
["foo", "bar", "key"]
];
console.log( lookForKey( arr ) );
有两个变化。首先,您必须在递归调用上获得回报。但是,如果递归调用返回false,则您不希望立即从调用方返回。您要继续循环。因此,您可以将其设置为条件条件,并且仅在递归调用返回true时才返回true。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句