数组去重

47 阅读1分钟

循环

// 这种情况能可以区分开 数字和字符串的区别
const arrs = [1,2,2,'2',5,6,6]
const noRepeat = (arr) => {
    const res = []
    for (let i = 0; i < arr.length; i++) {
        if (arr[i] && res.indexOf(arr[i]) < 0) {
            res.push(arr[i])
        }
    }
    return res
}
console.log(noRepeat(arrs)) // (5) [1, 2, '2', 5, 6]

利用 Set

const arr = [1,2,2,2,5,6,6]
const noRepeat = (arr) => {
    return Array.from(new Set(arr))
    // 或者这样写
    // return [...new Set(arr)]
}

console.log(noRepeat(arr)) // (4) [1, 2, 5, 6]

利用 Map

const arrs = [1,2,2,'2',5,6,6]
const noRepeat = (arr) => {
    const mapData = new Map()
    for (let i = 0; i < arr.length; i++) {
        if (!mapData.get(arr[i])) {
            mapData.set(arr[i])
        }
    }
    return [...mapData.keys()]
}
console.log(noRepeat(arrs)) // (5) [1, 2, '2', 5, 6]