我正在开发一个游戏项目。我需要帮助我的一个功能。我需要从具有特定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。
感谢您的回答:)
答案 0 :(得分:2)
答案 1 :(得分:0)
您忘记添加第二个return
声明。
另请注意,您可以使用the ternary operator(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))