JavaScript随机选择不重复元素代码分析
JavaScript随机选择不重复元素代码分析
这段代码使用JavaScript实现了一个随机选择函数,目的是从一个包含水果名称的数组中随机选择一个元素,并尽可能避免重复选择。
const options = ['apple', 'banana', 'orange', 'kiwi', 'grape'];
var i = -1;
function randomSelect() {
const randomIndex = Math.floor(Math.random() * options.length);
if(i!==-1){
if(i == randomIndex){
//alert('调用函数' + i);
end;
randomSelect();
}else{
//alert('ss输出' + randomIndex);
i = randomIndex;
return options[randomIndex];
}
}else{
i = randomIndex;
//alert(randomIndex);
return options[randomIndex];
}
}
代码分析:
- 定义数组和变量:
options数组存储了水果名称。i变量用来记录上次选择的索引,初始值为 -1,表示还没有选择过。
- randomSelect 函数:
randomIndex变量生成一个随机索引,用于从options数组中选择元素。if(i!==-1)判断是否已经选择过元素,如果已经选择过,则进入内部判断。if(i == randomIndex)判断随机索引是否和上次选择相同,如果相同,则重新调用randomSelect函数,继续选择。else表示随机索引不同,则记录新索引到i变量中,并返回该索引对应的元素。
else表示第一次选择,则记录随机索引到i变量中,并返回该索引对应的元素。
局限性:
- 代码没有统计重复次数的功能,无法确定运行 1000 次后重复出现的次数。
- 代码中使用了
end关键字,但end不是 JavaScript 的关键字,会导致代码错误。 - 代码逻辑相对复杂,可以进行优化。
改进方向:
- 使用一个计数器统计重复次数。
- 使用循环结构代替递归调用
randomSelect函数,提高效率。 - 改进代码逻辑,使其更简洁易懂。
总结:
这段代码尝试使用 i 变量记录上次选择的索引,并利用条件判断避免重复选择。但代码存在一些局限性,需要进行改进。通过学习这段代码,我们可以了解到 JavaScript 中随机选择元素的实现方式,以及如何避免重复选择。
原文地址: https://www.cveoy.top/t/topic/nsdJ 著作权归作者所有。请勿转载和采集!