zoukankan      html  css  js  c++  java
  • JS中数组去重的几种方法

    一、使用双重for循环,再利用数组的splice方法去重

    var arr = [1,2, 5, 7, 7, 3, 2, 5, 9, 4, 5];
            function quChong(arr) {
                for (var i = 0, len = arr.length; i < len; i++) {
                    for (var j = i + 1, len = arr.length; j < len; j++) {
                        if (arr[i] === arr[j]) {
                            arr.splice(j, 1);
                            j--;        // 每删除一个数j的值就减1
                            len--;      // j值减小时len也要相应减1(减少循环次数,节省性能)   

                        }
                    }
                }
                return arr;
            }
            console.log(quChong(arr));       //  1, 2, 5, 7, 3, 9, 4
     
    二、利用数组的includes方法去重
    var arr = [2, 0, 8, 3, 1, 5, 5, 2];
            function quChong(arr) {
                var arr1 = [];
                for (var i = 0, len = arr.length; i < len; i++) {
                    if (!arr1.includes(arr[i])) {      // 检索arr1中是否含有arr中的值
                        arr1.push(arr[i]);
                    }
                }
                return arr1;
            }
            console.log(quChong(arr));      //  2, 0, 8, 3, 1, 5
     
    三、利用数组的filter方法去重
    var arr = [1, 2, 7, 9, 5, 7, 4, 0, 4];
            function quChong(arr) {
                // 如果新数组的当前元素的索引值 == 该元素在原始数组中的第一个索引,则返回当前元素
                return arr.filter(function (item, index) {
                    return arr.indexOf(item, 0) === index;
                });
            }
            console.log(quChong(arr));    //  1, 2, 7, 9, 5, 4, 0
     
    四、利用数组的indexOf方法去重
    var arr = [1, 2, 7, 9, 5, 7, 4, 0, 4];
            var newarr=[];
            for(var i=0;i<arr.length;i++){
                if(newarr.indexOf(arr[i])===-1){//满足条件,不在数组中
                    newarr.push(arr[i]);
                }
            }
            console.log(newarr);   //1, 2, 7, 9, 5, 4, 0
     
    五、利用数组的sort方法去重
    var arr = [1, 2, 7, 9, 5, 7, 4, 0, 4];
            function quChong(arr) {
                arr = arr.sort();
                var newarr = [arr[0]];
                for (var i = 1;i<arr.length; i++) {
                    if (arr[i] !== arr[i - 1]) {
                        newarr.push(arr[i]);
                    }
                }
                return newarr;
            }
            console.log(quChong(arr));   //  0, 1, 2, 4, 5, 7, 9
  • 相关阅读:
    C++中使用多线程
    hdu 4223 dp 求连续子序列的和的绝对值最小值
    hdu 1372 bfs 计算起点到终点的距离
    hdu 4217 线段树 依次取第几个最小值,求其sum
    心得
    hdu 1175 bfs 按要求进行搜索,是否能到达,抵消两个(相同)棋子
    hdu 4221 greed 注意范围 工作延期,使整个工作时间罚时最少的单个罚时最长的值
    hdu 2844 多重背包 多种硬币,每一种硬币有一点数量,看他能组成多少种钱
    uva LCDDisplay
    hdu 4218 模拟 根据一个圆点和半径画一个圆 注意半径要求
  • 原文地址:https://www.cnblogs.com/lt66/p/12390997.html
Copyright © 2011-2022 走看看