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);
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();
}
代码解释:
const options = ['apple', 'banana', 'orange', 'kiwi', 'grape'];定义了一个包含水果名称的数组。var i = -1;定义了一个变量i,用于记录上一次选择的索引,初始值为 -1。function randomSelect() { ... }定义了一个名为randomSelect的函数,用来随机选择数组中的元素。const randomIndex = Math.floor(Math.random() * options.length);随机生成一个索引,用于选择数组中的元素。if(i!==-1){ ... } else { ... }逻辑判断语句,用于判断是否已经选择了元素。如果i不等于 -1,则表示已经选择过元素,需要进行重复选择判断。if(i == randomIndex){ ... } else { ... }逻辑判断语句,用于判断是否选择到了上一次选择的元素。如果选择到了上一次选择的元素,则递归调用randomSelect()函数重新选择。return options[randomIndex];返回选择的元素。p1.onclick = function() { ... }设置点击事件,当点击p1元素时,调用randomSelect()函数,并将返回值赋给p1元素的innerHTML属性。
总结:
本代码实现了一个随机选择数组元素的功能,并确保每次选择的元素都不相同。通过对代码逻辑的分析和解决方法的解释,我们可以更好地理解JavaScript代码的执行过程,并学会如何解决常见的代码问题。
原文地址: https://www.cveoy.top/t/topic/nsc2 著作权归作者所有。请勿转载和采集!