• 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);
          })
    }
  • 相关阅读:
    c++控制台 设置字体颜色
    c 无回显读取字符/不按回车即获取字符
    C 汉字处理
    codeblocks 汉字乱码
    [转]C/C++获取当前系统时间
    锐捷认证的一些问题&解决方法
    JAVA之BigInteger(转)【转】【很好用啊】
    常用小函数——不要重复造轮子
    字符串的朴素模式和KMP模式匹配
    直接插入排序
  • 原文地址:https://www.cnblogs.com/mc67/p/6935400.html
Copyright © 2020-2023  润新知