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];
  }
}

代码分析:

  1. 定义数组和变量:
    • options 数组存储了水果名称。
    • i 变量用来记录上次选择的索引,初始值为 -1,表示还没有选择过。
  2. randomSelect 函数:
    • randomIndex 变量生成一个随机索引,用于从 options 数组中选择元素。
    • if(i!==-1) 判断是否已经选择过元素,如果已经选择过,则进入内部判断。
      • if(i == randomIndex) 判断随机索引是否和上次选择相同,如果相同,则重新调用 randomSelect 函数,继续选择。
      • else 表示随机索引不同,则记录新索引到 i 变量中,并返回该索引对应的元素。
    • else 表示第一次选择,则记录随机索引到 i 变量中,并返回该索引对应的元素。

局限性:

  • 代码没有统计重复次数的功能,无法确定运行 1000 次后重复出现的次数。
  • 代码中使用了 end 关键字,但 end 不是 JavaScript 的关键字,会导致代码错误。
  • 代码逻辑相对复杂,可以进行优化。

改进方向:

  • 使用一个计数器统计重复次数。
  • 使用循环结构代替递归调用 randomSelect 函数,提高效率。
  • 改进代码逻辑,使其更简洁易懂。

总结:

这段代码尝试使用 i 变量记录上次选择的索引,并利用条件判断避免重复选择。但代码存在一些局限性,需要进行改进。通过学习这段代码,我们可以了解到 JavaScript 中随机选择元素的实现方式,以及如何避免重复选择。

JavaScript随机选择不重复元素代码分析

原文地址: https://www.cveoy.top/t/topic/nsdJ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录