JavaScript数组去重(5种方法)

// 数组去重
let arr = ['a', 'b', 'b', 1, 1, 'true', true, true, NaN, NaN, 'NaN', undefined, undefined, null, null];
// 1. 集合
unique1 = arr => [...new Set(arr)];

// 2. 双循环
unique2 = arr => {
    let array = [];
    arr.forEach(item => {
        if (!array.includes(item)) {
            array.push(item);
        }
    })
    return array
}

// 3. 对象的属性 / Map的key 唯一性
unique3 = arr => {
    const map = new Map();
    return arr.filter(item => !map.has(item) && map.set(item, 1))
}
unique4 = arr => {
    let obj = {}
    return arr.filter(item => !obj[typeof item + item] && (obj[typeof item + item] = 1))
}

// 4. 排序
unique5 = arr => {
    arr = arr.sort()
    let res = [arr[0]]
    for (let i = 1; i < arr.length; i++) {
        if (arr[i] !== arr[i - 1]) {
            res.push(arr[i])
        }
    }
    return res
}

 

posted @ 2020-02-07 10:43  flamestudio  阅读(170)  评论(0编辑  收藏  举报