js数组去重方法收藏(持续更新)

78 阅读1分钟

方法 1

let array = [1, 5, 2, 3, 4, 2, 3, 1, 3, 4]
function unique() {
    let arrReal = Array.from(new Set(array))
    console.log(arrReal)
}
unique(array)

方法 2

let array = [1, 5, 2, 3, 4, 2, 3, 1, 3, 4]
function unique(array) {
    let result = []
    array.forEach(item => {
        if (result.indexOf(item) === -1) {
            result.push(item)
        }
    })
    console.log(result)
}
unique(array)

方法 3

let array = [1, 5, 2, 3, 4, 2, 3, 1, 3, 4]
function unique(array) {
    let result = array.filter((item, index) => {
        return array.indexOf(item) === index
    })
    console.log(result)
}
unique(array)

方法 4

let array = [1, 5, 2, 3, 4, 2, 3, 1, 3, 4]
function unique(array) {
    let result = array.reduce((pre,item) => {
        return pre.includes(item) ? pre : [...pre,item]
    },[])
    console.log(result)
}
unique(array)

方法 5

let array = [1, 5, 2, 3, 4, 2, 3, 1, 3, 4]
function unique(array) {
    // 利用对象中的key不能重复这一特点
    let result ={}
    array.forEach((item,index) => {
        result[array[index]] = ''
        console.log(result)
    });

    result = Object.keys(result).map(item=>~~item)
    console.log(result)
}
unique(array)

方法 6

let array = [1, 5, 2, 3, 4, 2, 3, 1, 3, 4]
function unique(array) {
    let result = []
    loop: for (let i = 0; i < array.length; i++) {
        for (let j = i + 1; j < array.length; j++) {
            if (array[i] === array[j]) {
                continue loop
            }
        }
        result.push(array[i])
    }
    console.log(result)
}
unique(array)

方法 7

let array = [1, 5, 2, 3, 4, 2, 3, 1, 3, 4]
function unique(array) {
    let result = []
    let temp = array.sort()
    for (let i = 0; i < array.length; i++) {

        if (temp[i] !== temp[i + 1]) {
            result.push(array[i])
        }
    }
    console.log(result)
}
unique(array)