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
  • 相关阅读:
    【Android】Android连接SQLite3数据库的操作
    【exe4j】如何利用exe4j把java桌面程序生成exe文件
    Http网络协议
    【Spring】spring的7个模块
    【jsp】JSP中page指令isThreadSafe
    【MySQL】乐观锁和悲观锁
    【Eclipse】Eclipse上如何集成SVN插件
    【MySQL】mysql出现错误“ Every derived table must have its own alias”
    【Struts2】SSH如何返回JSON数据
    【Oracle】Oracle 的过程化SQL(PLSQL)中NULL值的处理
  • 原文地址:https://www.cnblogs.com/lt66/p/12390997.html
Copyright © 2011-2022 走看看