这里的exists =false, exists = true;
是怎么实现去重的呢?
var arr = new Array();
while(arr.length < 10){
var num = Math.round(180*Math.random()) + 20;
var exists =false;
for(var i=0,l=arr.length;i
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
可以考虑用ES6的set集合,自带去重功能,还是hash结构,效率比indexOf更高
把while拆开看、一层一层走一遍就知道他是如何去重的了啊
每次进入while exists的默认值都是false、arr是外部的、不存在重新赋值
判断到arr有存在的、就变为true、true就不会走push的哪一行代码
var exists =false;
for(var i=0,l=arr.length;i<l;i++){
}
if(!exists){
这段代码可以替换为:
arr.indexOf(num) === -1 && arr.push(num);
for循环旨在查找生成的随机数是不是已经生成过。
每次生成会初始exists,当查找已经生成这个数,将exists置为false
false代表生成的数是重复的
建议在 exists = true 后面加一个 break;