繁体   English   中英

JavaScript递归功能不起作用

[英]JavaScript Recursion function is not working

我正在做一个游戏项目。 我需要一项功能的帮助。 我需要从具有特定ID的数组中找到随机变量。 这是我的功能。

function randomPick(id,y){   // dots = array of 10 objects, each has id (farm or barrack );
    console.log('number '+y)
    if ( id == dots[y].id ){
        return dots[y]
    } else{
        randomPick(id,y-1);
    }
}

我的问题是,当函数第一次尝试找不到匹配项时,它将以较低的索引再次运行,直到找到匹配的点。 但是,如果运行超过一次,它将始终返回undefined。

感谢您的回答:)

您需要另一个return语句

return randomPick(id, y - 1);
// ^^^

我建议插入另一个检查,如果y小于零。

您忘记添加第二个return语句。

还要注意,您可以使用三元运算符condition ? valueIfTrue : valueOtherwise )来缩短逻辑,这将为您提供更多的空间来检查y是否在数组的范围内。

 var dots = [ { id: 'farm' }, { id: 'barrack' }, { id: 'farm' }, { id: 'barrack' }, { id: 'farm' }, { id: 'barrack' }, { id: 'farm' }, { id: 'barrack' }, { id: 'farm' }, { id: 'barrack' } ] function randomPick(id, y) { console.log('y = ' + y) if (y < 0 || y >= dots.length) return null return id == dots[y].id) ? dots[y] : randomPick(id, y - 1) } console.log(randomPick('farm', 5)) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM