[js]数组去重的几种方法

来源:互联网 发布:淘宝会员注册网站 编辑:程序博客网 时间:2024/05/17 22:51

问题:随机10个不相同的数(数值范围11~25之间的)并且存放到数组中

代码:

// 函数:随机生成一个从min到max的数function randFn(min, max){    return parseInt(Math.random() * (max-min+1) + min);}// 方法1: 遍历已存入的数和当前随机的数比较,引入开关判断是否存放var arr = [];for(var i = 0; i < 10; i++){    var flag = true;    var rand = randFn(11, 25);    for(var j = 0; j < arr.length; j++){        if (arr[j] == rand) {            flag = false;            i--;            break;        }    }    if (flag) {        arr.push(rand);    }}console.log(arr);// 方法2: 用while替换for循环,思路同方法1var arr = [];while(arr.length < 10){    var rand = randFn(11, 25);    var flag = true;    for(var i = 0; i < arr.length; i++){        if (arr[i] == rand) {            flag = false;            break;        }    }    if (flag) {        arr.push(rand);    }}console.log(arr);// 方法3: 用数组方法indexOf()var arr = [];for(var i = 0; i < 10; i++){    var num = randFn(11,25);    if(arr.indexOf(num) != -1){        i--;        continue;    }    arr.push(num);}console.log(arr);// 方法4: 思路同方法3,此方法为最简方法var arr = [];while(arr.length < 10){    var num = randFn(11, 25);    if(arr.indexOf(num) == -1){        arr.push(num);    }}console.log(arr);