Js中数组去重的几种方法

一、利用ES6中的 Set 方法去重

  注:Set为ES6新增的一个对象,允许存储任何类型(原始值或引用值)的唯一值

let arr = [1,0,0,2,9,8,3,1];
function unique(arr) {
    return Array.from(new Set(arr))
}
console.log(unique(arr)); // [1,0,2,9,8,3]  or6      console.log(...new Set(arr)); // [1,0,2,9,8,3]

 

二、使用双重for循环,再利用数组的splice方法去重(ES5常用)

var arr = [1, 5, 6, 0, 7, 3, 0, 5, 9,5,5];
    function unique(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(减少循环次数,节省性能)   
                    // console.log(j,len)

                }
            }
        }
        return arr;
    }
    console.log(unique(arr));       //  1, 5, 6, 0, 7, 3, 9

 

三、利用数组的indexOf方法去重

 注:array.indexOf(item,statt) 返回数组中某个指定的元素的位置,没有则返回-1

var arr =[1,-5,-4,0,-4,7,7,3];
    function unique(arr){
        var arr1 = [];       // 新建一个数组来存放arr中的值
        for(var i=0,len=arr.length;i<len;i++){
            if(arr1.indexOf(arr[i]) === -1){
                arr1.push(arr[i]);
            }
        }
        return arr1;
    }
    console.log(unique(arr));    // 1, -5, -4, 0, 7, 3

 

  

posted @ 2020-08-04 11:03  Oopy  阅读(1408)  评论(0)    收藏  举报