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

    数组去重是一个比较古老的话题,当然也是很经典的一个js不朽话题,今天项目又用到了数组去重,我们就老生常谈一下此话题;

    方法1: 利用indexof判断新数组中是否包含老数组中的元素,没有就push

     1 var arr=[1,2,33,1,2,333,'苹果','香蕉','苹果',22];
     2         //利用indexOf
     3         function unique(arr){
     4             var newArr=[];
     5             for(var i=0;l=arr.length,i<l;i++){
     6                 if(newArr.indexOf(arr[i])==-1){
     7                     newArr.push(arr[i]);
     8                 }
     9             }
    10             return newArr;
    11         }
    12         console.log(unique(arr));
    13         //[1, 2, 22, 33, 333, "苹果", "香蕉"]

    方法2:利用下标,通过indexof判断,如果第i项第一次出现的索引是i,那么就添加到新数组,否则就在新数组中存在,不添加

     1 var arr=[1,2,33,1,2,333,'苹果','香蕉','苹果',22];
     2         //利用下标加indexOf
     3         function unique1(arr){
     4             var newArr=[arr[0]];
     5             for(var i=1;l=arr.length,i<l;i++){
     6                 if(arr.indexOf(arr[i])==i){
     7                     newArr.push(arr[i])
     8                 }
     9             }
    10             return newArr;
    11         }
    12         console.log(unique1(arr));
    13         //[1, 2, 22, 33, 333, "苹果", "香蕉"]

     方法3:据说是最快去重方法,构建一个对象,利用key value来去重

     1 var arr=[1,2,33,1,2,333,'苹果','香蕉','苹果',22];
     2         //对象键值去重
     3         function unique2(arr){
     4             var newObj={},newArr=[],type,val;
     5             for(var i=0;l=arr.length,i<l;i++){
     6                 val=arr[i];
     7                 type=typeof val;
     8                 console.log(type);
     9                 if(!newObj[val]){
    10                     newObj[val]=[type];
    11                     newArr.push(val);
    12                 }else if(newObj[val].indexOf(type)<0){
    13                     newObj[val].push(type);
    14                     newArr.push(val);
    15                 }
    16             }
    17             return newArr;
    18         }
    19         console.log(unique2(arr));
    20        //[1, 2, 22, 33, 333, "苹果", "香蕉"]

    方法4:双重遍历去重

     1 //双重遍历去重
     2         var arr=[1,2,33,1,2,333,'苹果','香蕉','苹果',22];
     3         function unique3(arr){
     4             var newArr=[];
     5             for(var i=0;l=arr.length,i<l;i++){
     6                 for(var j=i+1;j<l;j++){
     7                     if(arr[i]===arr[j]){
     8                         j= ++i;        
     9                     }
    10                 }
    11                 newArr.push(arr[i]);
    12             }
    13             return newArr;
    14         }
    15         console.log(unique3(arr));
    16         //[1, 2, 22, 33, 333, "苹果", "香蕉"]

    方法5:如果你使用了jQuery那么恭喜你 ,去重很简单,因为jQuery有为此准备api,但是切记先把jQuery引入

    1 var arr=[1,2,33,1,2,333,'苹果','香蕉','苹果',22];
    2         //jquery unique方法
    3         console.log($.unique(arr));
    4       //[1, 2, 22, 33, 333, "苹果", "香蕉"]

    好了,目前就这些,有其他好的办法大家也可以评论告诉我下,等有了新方法在给大家更。。。

     //[1, 2, 22, 33, 333, "苹果", "香蕉"]
  • 相关阅读:
    samba安装和配置
    linux下打包命令的使用
    Linux目录结构简析
    Linux服务器的安装
    linux下定时任务设置
    创建表空间并授权
    selenium2.0(WebDriver) API
    selenium + python之元素定位
    Linux实战教学笔记13:定时任务补充
    Linux实战教学笔记11:linux定时任务
  • 原文地址:https://www.cnblogs.com/fuzitu/p/7366776.html
Copyright © 2011-2022 走看看