zoukankan      html  css  js  c++  java
  • javaScript 去除数组中的重复值

    javaScript 去除数组中的重复值

    //js 数组去除重复的方法:ps:forEach是ECMA5中Array新方法中最基本的一个,就是遍历
    
    Array.prototype.unique=function (){
          var result=[];
          this.forEach(function (val){
                if (result.indexOf(val)<0){
                      result.push(val);
                }
          })
          return result;
    }
    
    //利用hash表去除重负的方法;这是一种利用空间换区时间的方法;
    Array.prototype.uniqueFn=function (){
          var result=[];
          var hash={};
          this.forEach(function (val){
                if (!hash[val]){
                      hash[vak]=true;  //下次再遇到这个值,也无法进入循环体;
                      result.push(val);
                }
          })
         return result;
    }
    
    //因为JavaScript 是弱类型的脚本语言,所有数组中没有数据类型的判断;
    //对于下面的数组可能会有误;
    // 1,2,’1’,’2’,3],去重结果为[1,2,3],原因在于对象对属性索引时会进行强制类型转换,arr[‘1’]和arr[1]得到的都是arr[1]的值,因此需做一些改变
    // arr[x] 会自动的将我们的x转成字符串类型的呀;
    Array.prototype.unique=function (){
          var result=[];
          var hash={};
          this.forEach(function (val){
                var type=typeof(val);
                hash[val] || (hash[val]=new Array());
                if(hash[val].indexOf(type)<0){ //对应的可以下是否又该类型的值;
                      hash[val].push(type); //存值对应的数据类型;
                      result.push(val); //存值
                }
          })
    }

     还有一种方法,有点绕;不过还挺不错滴呀;

    先排序后去重

    Array.prototype.unique=function(){
          var result=[this[0]]; //取出头一个数据;
          this.sort();  //排序后,有重复的数据会拍再一起
          this.forEach(function (val){
                val!=result[result.length-1] && result.push(val);
          })
    }
  • 相关阅读:
    linux常用命令
    webStorm关闭自动保存
    jquery封装常用的方法
    请求头的设置
    表单序列化对象,jquery
    linux开机启动Tomcat服务器
    centOS安装git,保存用户名和密码
    CentOS7启动Tomcat报错:./startup.sh: Permission denied
    javaWeb使用百度编辑器上传图片的问题
    es6-Symbol用法
  • 原文地址:https://www.cnblogs.com/mc67/p/6935400.html
Copyright © 2011-2022 走看看