zoukankan      html  css  js  c++  java
  • 数组去重

    写在前面:大学时没有刷过的算法题迟早要补回来,计划是先去网上找一些经典的算法题,如数组排序,去重等等,然后再去leetcode由简至难按照标签继续刷题,我也会在博客里持续更新我刷的题目,感兴趣的话欢迎关注我

    1.利用ES6的set方法

    function unique(arr){
       return Array.from(new Set(arr));
    }
    
    // 测试
    var array=[1,2,3,4,55,5,55,66,66,66,77];
    console.log(unique(array));  // [1, 2, 3, 4, 55, 5, 66, 77]
    
    

    2.利用对象属性存在的特性,如果没有该属性则存入新数组

    function unique(arr){
        var res  = [];
        var obj = {};
        for(var i=0;i<arr.length;i++){
            if(!obj[arr[i]]){
                obj[arr[i]]=1;
                res.push(arr[i]);
            }
        }    
        return res
    }
    
    //测试
    var array=[1,2,3,4,55,5,55,66,66,66,77];
    console.log(unique(array));  // [1, 2, 3, 4, 55, 5, 66, 77]
    

    3.利用数组的indexOf/lastIndexOf 下标属性来查询

      function unique(arr){
        var res   = [];
        for(var i=0;i<arr.length;i++){
            if(res.indexOf(arr[i])==-1){
                res.push(arr[i]);
            }
        }
        return res;
    }
    //测试
    var array=[1,2,3,4,55,5,55,66,66,66,77];
    console.log(unique(array));  // [1, 2, 3, 4, 55, 5, 66, 77]
    
    

    4.利用数组原型对象上的includes方法

    function unique(arr){
      var res  =[];
      for(var i=0;i<arr.length;i++){
          if(!res.includes(arr[i])){
              res.push(arr[i])
          }
      }
      return res
    }
    //测试
    var array=[1,2,3,4,55,5,55,66,66,66,77];
    console.log(unique(array));  // [1, 2, 3, 4, 55, 5, 66, 77]
    
    
    

    5.利用数组原型上的filter和include方法

    function unique(arr){
        var res=[];
        res=arr.filter(function(item){
          return res.includes(item)?'':res.push(item);
              });
        return res;
    }
    //测试
    var array=[1,2,3,4,55,5,55,66,66,66,77];
    console.log(unique(array));  // [1, 2, 3, 4, 55, 5, 66, 77]
    
    
    
    

    6.利用数组原型的forEach和includes方法

    function unique(arr){
        var  res=[];
        arr.forEach(function(item){
            if(!res.includes(item)){
                res.push(item);
            }
        }) 
        
        return res;
    }
    //测试
    var array=[1,2,3,4,55,5,55,66,66,66,77];
    console.log(unique(array));  // [1, 2, 3, 4, 55, 5, 66, 77]
    
    
    
    

    7.利用数组原型对象上的splice方法

    function unique(arr){
    var i,j,len=arr.length;
    for(i=0;i<len;i++){
        for(j = i+1;j<len;j++){
            if(arr[i]==arr[j]){
                arr.splice(j,1);
                len--;
                 j--;
            }
        }
    }
    return arr
    }
    //测试
    var array=[1,2,3,4,55,5,55,66,66,66,77];
    console.log(unique(array));  // [1, 2, 3, 4, 55, 5, 66, 77]
    
    

    8.复杂数组去重,判断单一固定属性值相同,则为重复数据

    
      var studentList=[
        {name:'Anna',age:22,schoolCode:111111},
        {name:'Jessica',age:25,schoolCode:222222},
        {name:'Alex',age:27,schoolCode:111111}
      ];
      
      var resultArr=[];
      
      var i,j,len=studentList.length;
      
      for(i=0;i<len;i++){
        for(j=i+1;j<len;j++){
            if(studentList[i].schoolCode===studentList[j].schoolCode){
                j=++i;
                
            }
        }      
       resultArr.push(studentList[i])   
      }
      console.log(resultArr)
    
    
  • 相关阅读:
    linux中批量添加文件前缀的操作
    Opencv中图像height width X 轴 Y轴 rows cols之间的对应关系
    PyCharm 快捷键失效解决办法
    模型权重初始化的可行性分析
    pycharm报错:Process finished with exit code -1073741819 (0xC0000005)解决办法
    损失函数———有关L1和L2正则项的理解
    利用tensorboard可视化checkpoint模型文件参数分布
    linux部署.net Core项目
    Java开发工程师2020最新面试题-适用于2-3年工作经验
    springboot常用注解
  • 原文地址:https://www.cnblogs.com/JessicaIsEvolving/p/8585868.html
Copyright © 2011-2022 走看看