zoukankan      html  css  js  c++  java
  • Js删除数组重复元素的多种方法

      js对数组元素去重有很多种处理的方法,本篇文章中为网络资源整理,当然每个方法我都去实现了;写下来的目的是希望自己活学活用,下次遇到问题后方便解决。

    第一种

     1 function oSort(arr){
     2     var result={};
     3     var newArr=[];
     4     for(var i=0;i<arr.length;i++){
     5         if(!result[arr[i]]){
     6             console.log(result[arr[i]]); //看看输出的是什么
     7             newArr.push(arr[i]);
     8             result[arr[i]]=1;
     9         }
    10     }
    11     console.log(newArr);
    12 }
    13 var st=['a','a','b','a','c','d'];
    14 oSort(st);

    以上代码输出  ["a", "b", "c", "d"]

    第二种

      备注:遍历要删除的数组st, 把元素分别放入另一个数组tmp中,在判断该元素在st中不存在才允许放入tmp中
     1 function unique(st){
     2     var tmp=[];
     3     for(var i in st){
     4         if(tmp.indexOf(st[i]) == -1){
     5             tmp.push(st[i]);
     6         }
     7     }
     8     return tmp;
     9 }
    10 var arr=['aa','ab','b','aa','c','d'];
    11 console.log(unique(arr));

    以上代码输出 ["aa", "ab", "b", "c", "d"]

    说明一下,当arr.indexOf()未找到元素时返回-1

    第三种

      备注:把目标数组st的元素值和键的位置调换 自动就把重复的元素给删除掉了
     1 function unique(st){
     2     var tmp=new Array();
     3     for(var i in st){
     4         tmp[st[i]]=1;
     5     }
     6     var tmparr=new Array();
     7     for(var j in tmp){
     8         tmparr.push(j);
     9     }
    10     console.log(tmp);//看看这里输出了什么
    11     return tmparr;
    12 }
    13 var st=['aa','ab','b','aa','c','d'];
    14 console.log(unique(st));

    以上代码输出 ["aa", "ab", "b", "c", "d"]

    第四种

     1 function unique(st){
     2     st=st||[];
     3     var al={};
     4     for(var i=0;i<st.length;i++){
     5         var j=st[i];
     6         if(typeof (al[j]) =='undefined'){
     7             al[j]=1;
     8         }
     9     }
    10     st.length=0;
    11     for(var i in al){
    12         st[st.length]=i;
    13     }
    14     return st;
    15 }
    16 var arr=['aa','ab','b','aa','c','d'];
    17 console.log(unique(arr));

    以上代码输出 ["aa", "ab", "b", "c", "d"]

    第五种

      备注:使用原型的方法来发散思维,原博主还是很赞。

     1 //数组去重的方法
     2 Array.prototype.unique=function(){
     3     //集中声明变量
     4     var 
     5       oldArr=this,
     6       newArr=[oldArr[0]],
     7       len=oldArr.length,
     8       i=1;
     9       
    10     //过滤空数组
    11     if(!len) return this;
    12     
    13     //过滤重复元素
    14     for(;i<len;i++){
    15        newArr.indexOf(oldArr[i])<0 ? newArr.push(_this) : '';  
    16     }
    17     //返回过滤后的数组没有影响原数组
    18     return newArr;
    19 }
    20 var arr=['a','a','b','a','c','d'];
    21 console.log(arr.unique());//["a", "b", "c", "d", unique: function]

     上面有提到 indexOf() 方法, 可以看看我的另外一篇文章简单了解JS 中的indexOf方法

    综合以上多种数组去重方法,其实方法都是很类似的;就是个别方法与众不同,有时间再来研究其中道理。
    附上原文链接:http://www.cnblogs.com/yy-hh/p/4591852.html#3304504

    如有疑问之处,欢迎指点,我会及时更正,谢谢!

  • 相关阅读:
    mysql常用基本命令
    mysql8.0.13下载与安装图文教程
    k8s ingress 增加跨域配置
    Jenkins 备份恢复插件 thinBackup 使用
    k8s HA master 节点宕机修复
    nginx 跨域问题解决
    mongodb 3.4.24 主从复制
    k8s 线上安装 jenkins并结合 jenkinsfile 实现 helm 自动化部署
    k8s helm 运用与自建helm仓库chartmuseum
    centos6 源码安装 unzip
  • 原文地址:https://www.cnblogs.com/anniey/p/6249786.html
Copyright © 2011-2022 走看看