JS数组去重

82 阅读1分钟

Set与Array.from

利用ES6语法

function unique(arr){
    return Array.from(new Set(arr))
}

Set与解构赋值

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

filter过滤

function unique(arr){
    return arr.filter((item,index,array)=>array.indexOf(item)===index)
}

reduce累加器

function unique(arr){
    return arr.reduce((pre,cur)=>{
        // pre.includes(cur)?'':pre.push(cur)
        ~pre.indexOf(cur)?'':pre.push(cur)
        return pre
    },[])
}

利用相邻元素比较

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

利用对象key唯一

function unique(arr) {
    return Object.keys(arr.reduce((pre,cur)=>{
        pre[cur]=1
        return pre
    },{}))
}
function unique(arr) {
    let obj = {}
    let res = []
    for (let i = 0; i < arr.length; i++) {
        if (obj[arr[i]]) {
            obj[arr[i]]++
        } else {
            res.push(arr[i])
            obj[arr[i]] = 1
        }
    }
    return res
}

双重for循环

function unique(arr){
    let res=[]
    for(let i=0;i<arr.length;i++){
        let off=true
        for(let j=0;j<res.length;j++){
            if(arr[i]===res[j]){
                off=false
                break
            }
        }
        if(off){
            res.push(arr[i])
        }
    }
    return res
}