【发布时间】:2016-05-31 20:55:17
【问题描述】:
我有以下函数,它可以从数组中提取随机索引而不重复索引,并一直将它们拉出,直到所有索引都被使用,然后自行重置并开始重新使用它们。它还尝试确保最后一个被拉出的索引与下一个在重置时拉出的索引不同,这样您就不会在一个索引中出现相同的索引行。
var listIndexes = [];
var lastIndex;
function getRandomIndex(indexes)
{
if (!listIndexes.length) {
for (var i = 0; i < indexes; i++) {
listIndexes.push(i);
}
}
var randomIndex = Math.floor(Math.random() * listIndexes.length);
var uniqueIndex = listIndexes[randomIndex];
listIndexes.splice(randomIndex, 1);
if(lastIndex && uniqueIndex == lastIndex)
{
listIndexes = [];
getRandomIndex(indexes);
return;
}
lastIndex = uniqueIndex;
return uniqueIndex;
}
var index = getRandomIndex(5);
console.log(index);
但是,当它遇到代码时:if(lastIndex && uniqueIndex == lastIndex) 会导致它返回未定义的索引。所以我试图退出函数并重新调用函数重试的方式并没有按计划工作。
如何退出当前函数调用并重新调用该函数以获取与lastIndex 不同的新随机索引。请注意,无论调用多少次函数,lastIndex 都会保持不变,直到新索引不一样。
【问题讨论】:
标签: javascript