• js去重的三种方法.md


    主要记录的js常用的三种方法进行介绍和总结。

    第一种是比较常规的方法

    思路:

    1. 构建一个新的数组存放结果
    2. 循环原来的数组的每一个元素,用来与存放结果的数组进行一一对比
    3. 结果数组里没有相等的,就把该元素放在结果数组中
    Array.prototype.unique1 = function() {
      var result = [this[0]];
      for(var i = 0; i < this.length; i ++ ) {
        var repeat = false;
        for(var j = 0; j < result.length; j ++) {
          if(this[i] === this[j]) {
            repeat = true;
            break;
          }
        }
        if(!repeat) {
          result.push(this[i]);
        }
      }
      return result;
    }
    

    第二种方法比第一种方法更高效

    思路:

    1. 构建一个新数组存放结果
    2. 将原来的数组先进行排序
    3. for循环检查原数组的第i个元素与结果数组的最后一个元素是否相同
    4. 因为已经排序,所以重复元素都会在相邻位置上
    5. 如果不相同,则存放在结果数组中
    Array.prototype.unique2 = function() {
      this.sort();
      var result = [this[0]];
      for(var i = 1; i < this.length; i ++) {
        if(this[i] !== result[result.length - 1] ) {
          result.push(this[i])
        }
      }
      return result;
    }
    

    注意:该数组要先排序先,所以去重之后的结果也是已经排序过后的了。如果不能改变原来数组的顺序,该方法就不适用了

    第三种方法是个人比较推荐的,最高效

    思路:

    1. 构建一个空数组存放结果数组
    2. 定义一个空对象
    3. for循环原数组的元素,判断该元素在结果数组中不重复的话,就放到结果数组中,并且将该元素的内容作为对象的一个属性,并赋值为true
    4. 在对比的时候,每次取出元素,然后到对象中访问该属性,如果能够访问到,则说明是重复的
    Array.prototpye.unique3 = function() {
      var json = {}, result  = [];
      for(var i = 0; i < this.length; i ++) {
        if(!json[this[i]]) {
          result.push(this[i]);
          json[this[i]] = true;
        }
      }
      return result;
    }
    
  • 相关阅读:
    简单理解同步与异步
    Python3.x 安装Scrapy框架
    Python命名规范
    python 02/100例
    raw_input与input的区别
    二叉排序树
    串和广义表
    数据结构整理 第一章
    时间复杂度
    Music
  • 原文地址:https://www.cnblogs.com/Imflyer/p/7793224.html
Copyright © 2020-2023  润新知