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);
          })
    }
  • 相关阅读:
    常见sql注入的类型
    sql-labs 18-20(sqlmap注入)
    sqli-labs11-17(手注+sqlmap)
    Android Zygote进程启动分析
    android点击桌面App图标activity启动流程
    Android启动过程
    android主线程ActivityThread
    mac上写c++
    Gradle发布项目到 maven 之novoda/bintray-release(3)
    Gradle发布项目到 maven 之gradle-bintray-plugin(2)
  • 原文地址:https://www.cnblogs.com/mc67/p/6935400.html
Copyright © 2011-2022 走看看