• 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
  • 相关阅读:
    jm8.6编解码器概述
    mingw32环境下链接库找不到问题
    ts流中的pcr与pts计算与逆运算
    基于医疗知识图谱的问答系统(二)
    Neo4j图数据库导入数据
    基于医疗知识图谱的问答系统(一)
    知识图谱和neo4j的基本操作
    从.NET转GO了
    Flask开发技巧之参数校验
    如何在PPT中插入Pyecharts的图表?
  • 原文地址:https://www.cnblogs.com/lt66/p/12390997.html
Copyright © 2020-2023  润新知