随机数生成及数组去重

111 阅读2分钟

数组去重

// 数组去重

 //第一种

  let arrOld = [2, 3, 5, 4, 3, 2, 6, 8, 5, 4, 6, 2];

  let flag = true;//新数组中没有相同的元素

  // 1、建立新数组

  let arrNew = [];

  // 2、遍历旧数组

  for (let i = 0; i < arrOld.length; i++) {

   flag = true;

     // 4、往新数组中放置旧数组的元素

      // 5、遍历新数组

    for (let j = 0; j < arrNew.length; j++) {

    if (arrNew[j] == arrOld[i]) {

     // 新数组中有相同的元素变成false

     flag = false;

    }

   }

   // 3、判断如果新数组中有相同的元素,就不往新数组中放了

   if (flag) {

    arrNew.push(arrOld[i])// [2, 3, 5, 4, 6, 8]

   }

  }

  console.log(arrNew);

    // 第二种

    var arr = [100, 20, 30, 50, 30, 100, 20, 50];//[100,20,30,50]

    // 1、创建新数组

    var arrNew1 = [];

    // 2、创建新对象

    var objNew = {};

    // 3、遍历旧数组

    for (let i = 0; i < arr.length; i++) {

    console.log(arr[i]);//100, 20, 30, 50, 30, 100, 20, 50

    // 4、将旧数组中的元素当做新对象的属性名(属性名不能重复),属性值随意写

     objNew[arr[i]] = "优秀";

        }

     console.log(objNew);

     // 5、遍历新对象的属性

     for ( let x in objNew) {// for... in ..以任意顺序迭代一个对象的除Symbol以外的可枚举属性,包括继承的可枚举属性。属性名就//100,20,30,50

      console.log(x);//打印属性:100,20,30,50

     // 6、将新对象中的属性当做新数组的元素即可,用push方法添加Number方法转变数据类型

      arrNew1.push(Number(x));

      }

//第三种

   //利用set结构成员值唯一的特点

   let arr1 = [100, 20, 30, 50, 30, 100, 20, 50];

   let arrSet = new Set(arr1);//[100,20,30,50]
   console.log(arrSet);

生成6位随机数

// 声明两个变量

    var str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

    console.log(str.length);

    var vc2 = '';

    //  for循环获取6位随机数

    for (let i = 0; i <= 5; i++) {

      // 下标取整赋值

      let num = parseInt(Math.random() * str.length);

//Math.random()获取0~1之间的浮点数 参考mdn文档

      // 在 vc2 变量 中 没有字符 str[num]

  if (vc2.indexOf(str[num]) == -1) {

//indexOf方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1

        // 如果字符不重复,就写入到验证码中

        vc2 += str[num];

      } else {

        i--;

        // 如果字符重复,没有写入验证码

        // 就执行 i-- 重新执行一次循环,获取一个新的字符

        // 确保是6位字符

      }

    }

    console.log(vc2);

其他网址:www.jianshu.com/p/c36cd8114… 其他网址:t.csdn.cn/VBkDu