JavaScript数组去重

147 阅读1分钟

如何实现数组去重?

假设有数组 array = [1,5,2,3,4,2,3,1,3,4]
你要写一个函数 unique,使得
unique(array) 的值为 [1,5,2,3,4]
也就是把重复的值都去掉,只保留不重复的值。
(1)不使用Set实现:

function unique(arr) {
    let array2 = [];
    for (let i = 0; i < arr.length; i++) {
        if (array2.indexOf(arr[i])===-1) {
            array2.push(arr[i]);
        }
    }
    arr = array2;
    return arr;
}

使用indexOf,要创建新的数组,浪费内存资源。
(2)使用Set实现:

let array = [1,5,2,3,4,2,3,1,3,4]
function unique(arr){
    let setArray =new Set(arr);
    return setArray
}

(3)使用Map去重:

function unique(arr) {
    let mapArray = new Map();
    arr.forEach((e, i) => mapArray.set(e, i))
    let array2 = [];
    mapArray.forEach((key, value) => { array2.push(value) });
    arr = array2;
    console.log(arr);
}
unique(array);