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);
          })
    }
  • 相关阅读:
    erlang 大神
    Mysql5.7全新的root密码规则
    单机多实例
    mysql 5.7源码安装
    MySQL审计功能
    MySQL升5.6引发的问题
    一千行MySQL学习笔记
    MySQL5.6新特性之GTID、多线程复制
    正确修改MySQL最大连接数的三种好用方案
    MYSQL 慢日志
  • 原文地址:https://www.cnblogs.com/mc67/p/6935400.html
Copyright © 2011-2022 走看看