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);
      randomSelect();
    } else {
      //alert('ss输出' + randomIndex);
      i = randomIndex;
      return options[randomIndex];
    }
  } else {
    i = randomIndex;
    //alert(randomIndex);
    return options[randomIndex];
  }
}

p1.onclick = function() {
  alert(randomSelect());
}

问题分析:

代码中的p1元素被定义为一个元素,但没有赋值,因此点击p1时调用randomSelect()函数返回的值没有被输出到任何地方,导致输出undefined

解决方法:

为了将函数的返回值输出到页面上,需要将返回值赋给p1元素的innerHTML属性或textContent属性。

示例:

p1.onclick = function() {
  p1.innerHTML = randomSelect();
}

代码解释:

  1. const options = ['apple', 'banana', 'orange', 'kiwi', 'grape']; 定义了一个包含水果名称的数组。
  2. var i = -1; 定义了一个变量 i,用于记录上一次选择的索引,初始值为 -1。
  3. function randomSelect() { ... } 定义了一个名为 randomSelect 的函数,用来随机选择数组中的元素。
  4. const randomIndex = Math.floor(Math.random() * options.length); 随机生成一个索引,用于选择数组中的元素。
  5. if(i!==-1){ ... } else { ... } 逻辑判断语句,用于判断是否已经选择了元素。如果 i 不等于 -1,则表示已经选择过元素,需要进行重复选择判断。
  6. if(i == randomIndex){ ... } else { ... } 逻辑判断语句,用于判断是否选择到了上一次选择的元素。如果选择到了上一次选择的元素,则递归调用 randomSelect() 函数重新选择。
  7. return options[randomIndex]; 返回选择的元素。
  8. p1.onclick = function() { ... } 设置点击事件,当点击p1元素时,调用randomSelect()函数,并将返回值赋给p1元素的innerHTML属性。

总结:

本代码实现了一个随机选择数组元素的功能,并确保每次选择的元素都不相同。通过对代码逻辑的分析和解决方法的解释,我们可以更好地理解JavaScript代码的执行过程,并学会如何解决常见的代码问题。

JavaScript 随机选择数组元素并避免重复:代码解析与问题排查

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

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