• js常用的数组去重方法


    给出以下数组

    var arr1 = new Array('1','2','3','3','5','4','5','6','5','5','88');

    实现对数组的去重

    1、 双重for循环去重

    Array.prototype.Duplicate = function() {
        let arr = this;
        for(let i = 0; i < arr.length-1; i++) {
          for (let j = i+1; j < arr.length; j++) {
              if (arr[i] == arr[j]) {
                  arr.splice(j, 1);
                  j--;  // 删除元素之后,需要将数组的长度也减1,否则无法去除掉后面相同的值.
              };
          };
        };
        return arr;
    }

    2、 利用递归调用去重

    Array.prototype.Duplicate = function() {
        let arr = this;
        arr.sort();
        function loop(index) {
            if (index > 1) {
                if (arr[index] == arr[index-1]) {
                    arr.splice(index, 1);
                };
                loop(index-1);
            };
        };
        loop(arr.length-1);
        return arr;
    }

    3、 利用对象去重

    Array.prototype.Duplicate = function() {
        let arr = this;
        let obj = {}
        let arr2 = []
        for (let i = 0; i < arr.length; i++) {
            if (!obj[arr[i]]) {
                obj[arr[i]] = true;
                arr2.push(arr[i]);
            }
        };
        return arr2;
    }

    4、 利用indexOf

    Array.prototype.Duplicate = function() {
        let arr = this;
        let arr2 = []
        for (let i = 0; i < arr.length; i++) {
            if (arr2.indexOf(arr[i]) == -1) {
                arr2.push(arr[i]);
            }
        };
        return arr2;
    }

    5、 利用es6 includes方法判断

    Array.prototype.Duplicate = function() {
        let arr = this;
        let arr2 = [];
        for (let i = 0; i < arr.length; i++) {
            if (!arr2.includes(arr[i])) {
                arr2.push(arr[i]);
            }
        }
        return arr2
    }

    console.log(arr1.Duplicate().toString());

    // 1,2,3,5,4,6,88

  • 相关阅读:
    《Linux网络安全技术与实现》学习
    OpenGL数据可视化
    CAPWAP简介
    《大话设计模式》学习小结
    《Python数据可视化编程实战》学习总结
    BufferedReader,缓冲输入字符流
    字符流拷贝图片,丢失数据的原因?
    reader,字符流
    BufferedInputSream和BufferedOutputSream,,,
    FileOutputSream
  • 原文地址:https://www.cnblogs.com/gaosong-shuhong/p/9771436.html
Copyright © 2020-2023  润新知