JS数组去重

173 阅读1分钟

1. Array.filter

// 看上去简单,实际很费时.
function unique(arr){
    return arr.filter((v,i,arr)=>arr.indexOf(v)===i);
}

2. 利用集合元素不重复的方式去重

// 效率相比Array.filter快了不少,但还不是最快.
function unique_set(arr){
    return Array.from(new Set(arr));
}

3. 遍历去重

// 原理与第一种方法类似,效率一样,慢!
function unique_item(arr){
    let newArr = [];
    let len = arr.length;
    for(let i=0;i<len;i++){
        if(arr.indexOf(arr[i])===i){
            newArr.push(arr[i]);
        }
    }
    return newArr;
}

4. 利用对象的key唯一去重

// 效率最高,速度最快!!!
function unique_obj(arr){
    let newArr = {};
    let newarr = []
    let len = arr.length;
    for(let i=0;i<len;i++){
        if(newArr[arr[i]] !== 1){
            newArr[arr[i]]=1;
            newarr.push(arr[i]);
        }
    }
    return newArr;
}