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

猜你喜欢

转载自www.cnblogs.com/lt66/p/12390997.html