2020-05-03 数组去重

126 阅读1分钟

列三个比较常见的:

1.indexOf()去重:

function unique(array){
    var temp = []; 
    for(var i = 0; i < array.length; i++){
        if(temp.indexOf(array[i]) == -1){
            temp.push(array[i]);
        }
    }
    return temp;
}

2.Set(ES6红利)

function unique(array) {
    return [...new Set(array)]
}

ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。


3.Map

vue2的基础definePrototype并不支持监听map,vue3将从definePrototype过渡到proxy,而proxy可以很好的用作map的监听,故而vue3支持了map和set的绑定功能。

function unique(arr) {
    const res = new Map();
    //过滤条件是,如果res中没有某个键,就设置这个键的值为1
    return arr.filter((a) => !res.has(a) && res.set(a, 1))
}

参考:灰色的龙猫 es6 map与weakmap与array对比以及应用

一粒一世界 Set、Map及数组去重