zoukankan      html  css  js  c++  java
  • 数组去重的几种方法

    1.通过循环遍历数组,根据判断flag的值来确定是否将值放入到数组中

     1 //数组去重:
     2     var arr = [5,1,2,1,2,2,1,2,1,2,3,4,3,4,5,3,4,5,4,3,2,1];
     3     //希望得到的结果为[1,2,3,4,5]
     4     //1 创建一个结果数组
     5     var resultArr = [arr[0]];
     6     var flag;
     7     //2 遍历数组
     8     for(var i = 1; i < arr.length; i++){
     9       // 正确的实现方式
    10       flag = true;//假设当前arr[i]可以放入到resultArr中
    11       for(j = 0; j < resultArr.length; j++){
    12         //设置可以让假设失败的条件:如果偶遇任何一个元素相等,即说明不能放入
    13         if(arr[i] === resultArr[j]){
    14           flag = false;
    15        }
    16       }
    17       //根据flag的值设置最终操作
    18       if(flag){
    19         resultArr.push(arr[i]);
    20       }
    21     }
    22     console.log(resultArr);

    2.通过Es6语法进行数组去重

    1 //先定义一个重复的数组
    2 var arr = [1,1,2,2,2,3,3,4,4] 
    3 
    4 var set = new Set(arr) // {1,2,3,4}
    5 var newArr = Array.from(set) // 再将set转变成array
    6 console.log(newArr) // [1,2,3,4]

    实现的原理:SetArray的区别在于:Array中允许出现重复的元素,例如[1,2,2,3];而Set中的所有元素都是唯一的,只能是{1,2,3}。利用这一特性,我们就可以迅速地去掉数组中重复的元素。

    3.通过创建空对象,对象里面的属性名是数组的每个值,可以计算每个值重复的个数

     1 //使用数据存储功能完成数组去重并计数的案例
     2         var arr = [5,1,2,1,1,2,3,2,2,1,2,1,2,3,4,3,4,5,3,4,5,4,3,2,1];//货车
     3         //创建一个货物单
     4         var obj = {};
     5         var item
     6         //将货车中的货物一个个的拿过来看
     7         for(var i = 0;i<arr.length;i++){
     8             //看一看arr[i]这个货物有没有(检测obj中是否含有arr[i]这个属性)
     9             item = arr[i];
    10             //如果有值,这个值一定大于等于1
    11             //如果没有,默认为undefined
    12             if(obj[item]){
    13                 //说明有值,让值++
    14                 obj[item]++;
    15             }else{
    16                 //说明没有值,设置值为1
    17                 obj[item] = 1;
    18             }
    19 
    20         }
    21         console.log(obj);
  • 相关阅读:
    下载文件乱码问题的解决
    Jquery Ajax实例(一)
    JQuery实现checkbox的全选/取消全选,实现类似于邮箱功能
    C#重写ToString方法实例
    生成不重复的随机数
    List<T>清除重复某一项
    Ubuntu16.04安装有道词典
    Ubuntu16.04 VTK7.1.0+QT4.8.6+QtCreator开发环境配置
    MATLAB求解代数方程、微分方程的一些常用指令
    读取Simulink中Dataset类型的数据
  • 原文地址:https://www.cnblogs.com/md-lw/p/8744869.html
Copyright © 2011-2022 走看看