Javascript 5个随机数。if(arr.indexOf(randnum)>;-1)如何继续;防止重复?

Javascript 5个随机数。if(arr.indexOf(randnum)>;-1)如何继续;防止重复?,javascript,arrays,duplicates,Javascript,Arrays,Duplicates,我正在创建一个数组,其中包含5个随机数,这些随机数不会与电源球重复。我理解这个块的大部分内容,但我仍然是一个noob,我不完全理解if(arr.indexOf(randnum)>-1)如何继续防止重复 任何解释都将不胜感激 let arr = []; while(arr.length < 5){ let randnum = Math.floor(Math.random() * 69) + 1; if(arr.indexOf(randnum)> -1) continue

我正在创建一个
数组
,其中包含5个随机数,这些随机数不会与电源球重复。我理解这个块的大部分内容,但我仍然是一个noob,我不完全理解if(arr.indexOf(randnum)>-1)如何继续防止重复

任何解释都将不胜感激

let arr = [];
while(arr.length < 5){
    let randnum = Math.floor(Math.random() * 69) + 1;
    if(arr.indexOf(randnum)> -1) continue;
    arr[arr.length] = randnum;
}
console.log(arr);
让arr=[];
而(arr.length<5){
设randnum=Math.floor(Math.random()*69)+1;
如果(arr.indexOf(randnum)>-1)继续;
arr[arr.length]=randnum;
}
控制台日志(arr);
arr.indexOf(randnum)查找数组“arr”中数字“randnum”的索引:

例如[2,5,7,11,6]。indexOf(7)==2,因为数字7位于第二个位置

当找不到数字[2,5,7,11,6]时,它返回-1

检查它是否大于-1实际上是检查“randnum”是否在数组“arr”中 array.indexOf-->如果元素存在,它将返回其索引,如果不存在,它将返回-1

继续意味着忽略循环中的其余代码,并在循环中开始另一个迭代

如果(arr.indexOf(randnum)>-1)继续表示,若元素的索引大于-1,则表示元素已被找到,若继续,则表示不执行该行
arr[arr.length]=randnum

分解函数以更好地了解其工作原理的一个好方法是设置较低的可能值范围。在下面的示例中,值1-5是可能的。如果运行下面的代码段,您将能够看到何时检测到重复值

arr.indexOf(randnum)>-1
检测数组中是否存在
randnum
的值。当数组中存在值时,函数将返回大于-1的值。否则,将返回-1以指示它在数组中不存在

如果上述计算结果为true,则将执行
continue
,跳过
arr[arr.length]=randnum,负责将新编号添加到阵列中

让arr=[];
而(arr.length<5){
设randnum=Math.floor(Math.random()*5)+1;
如果(arr.indexOf(randnum)>-1){
日志(“检测到重复:+randnum”);
log(“当前数组值:”+arr);
继续;
}
arr[arr.length]=randnum;
}

控制台日志(arr)是一个很好的开始。我认为解释和可视化工具将帮助您了解引擎盖下发生的事情。只需在
Javascript
框中发布JS代码,然后单击
Forward>
查看
arr.indexOf(randnum)>-1
表示arr已经有一个值为
randnum
的元素,
continue
意味着跳过当前迭代。因此,基本上是说,如果数组中已经存在随机数,请不要添加新的数,然后循环,直到随机数不在数组中为止?一旦一个随机数没有出现在数组中,它将添加arr[arr.length]=randnum?这肯定有帮助。非常感谢。