zoukankan      html  css  js  c++  java
  • 去除数组的重复元素

    1.遍历数组法

    思路:新建一个新数组,遍历传入数组值不在新数组就加入该新数组

    注意:判断值是否在数组的方法indexOf是ECMAScript5的方法,IE8以下不支持,需要写兼容

    function unique1(array){

      var n = []

      for(var i = 0;i < array.length;i++){

        if(n.indexOf(array[i]) == -1){

          n.push(array[i])

        }

      }

      return n;

    }

     

    //IE8以下兼容

    //判断浏览器是否支持indexOf方法

    if(!Array.prototype.indexOf){

      Array.prototype.indexOf = function(item){

        var result = -1

        var a_item = null

        if(this.length == 0){

          return result

        }

        for(var i = 0;i < this.length;i++){

          a_item = this[i]

          if(a_item === item){

            result = i

            break;

          }

        }

        return result

      }

    }

     

    2.对象键值对法

    思路:新建以js对象以及新数组,遍历传入数组时,判断值是否为js对象的键,不是的话给对象新增该键并放入新数组

    注意:判断是否为js对象键时,会自动对传入的键执行toString(),不同的键可能会被误认为一样;例如:a[1]、a[“1”]

    function unique2(array){

      var n = {},r = [],val,type;

      for(var i = 0;i < array.length;i++){

        val = array[i];

        type = typeof val;

        if(!n[val]){

          n[val]=[type]

          r.push(val)

        }else if(n[val].indexOf(type) < 0){

          n[val].push(type)

          r.push(val)

        }

      }

      return r;

    }

     

    3.数组下标判断法

    思路:如果当前数组的第i项在当前数组中第一次出现的位置不是i ,那么表示第i项是重复的,忽略掉,否则存入结果数组

    function unique3(array){

      var n = [array[0]]

      for(var i = 1;i < array.length;i++){

        if(array.indexOf(array[i]) == i){

          n.push(array[i])

        }

      }

      return n;

    }

     

    4.排序后相邻去除法

    思路:给传入数组排序,排序后相同值相邻,然后遍历时新数组只加入不与前一值重复的值

    function unique4(array){

      array.sort()

      var re = [array[0]]

      for(var i = 0;i < array.length;i++){

        if(array[i] !== re[re.length - 1]){

          re.push(array[i])

        }

       }

      return re

    }

     

    5.优化遍历数组法

    思路:获取没重复的最右一值放入新数组,检测到右重复值时终止当前循环,同时进入顶层循环的下一轮判断

    function unique5(array){

      var r = []

      for(var i = 0;i < array.length;i++){

        for(var j = i + 1;j < array.length;j++){

          if(array[i] === array[j]){

            j = ++i

          }

        }

        r.push(array[i])

      }

      return r;

    }

  • 相关阅读:
    spring ContextUtils
    mysql top slow sql my.cnf配置
    _mysql_exceptions.OperationalError: (2006, 'MySQL server has gone away')
    linux Must my pidfile be located in /var/run? Stack Overflow
    zc.lockfile 1.0.0
    python Limit amount of RAM to a process (Linux) Server Fault
    使用 Nginx 提升网站访问速度
    bitnami mysql my.cnf配置
    Django pickling
    一个查找rpm包的站
  • 原文地址:https://www.cnblogs.com/twoeggg/p/8058996.html
Copyright © 2011-2022 走看看