JavaScript 随机选择元素并避免重复 - 代码优化建议
该代码使用 JavaScript 实现了从数组中随机选择元素,并通过 usedIndexes 数组记录已选元素的索引,避免重复选择。然而,该代码存在潜在的隐患:如果 options 数组中的所有元素都被选完后,usedIndexes 数组不会清空,程序将进入死循环。
为了避免死循环,建议在所有元素都被选完后清空 usedIndexes 数组。例如,可以添加一个判断条件,如果 usedIndexes 数组的长度等于 options 数组的长度,则清空 usedIndexes 数组。
以下是修改后的代码示例:
const options = ['apple', 'banana', 'orange', 'kiwi', 'grape'];
const usedIndexes = []; // 记录已经出现过的随机数
function randomSelect() {
if (usedIndexes.length === options.length) { // 判断是否所有元素都被选完
usedIndexes.length = 0; // 清空 usedIndexes 数组
}
const randomIndex = Math.floor(Math.random() * options.length);
if (usedIndexes.includes(randomIndex)) {
return randomSelect(); // 继续生成随机数
} else {
usedIndexes.push(randomIndex);
return options[randomIndex];
}
}
通过这种修改,程序能够在所有元素都被选完后重新开始选择,避免了死循环的风险。
原文地址: https://www.cveoy.top/t/topic/nsdl 著作权归作者所有。请勿转载和采集!