Javascript 数组去重的几种方式

235 阅读1分钟

一、ES6语法,Set去重

function funSet(arr){
    return Array.form(new Set(arr))
}

这个是目前最简单的去重方法,但是这个方法不支持对象,可以支持一些简单的数据格式去重

二、双重for循环去重

function funFor(arr){
    let i,
        j,
        len = arr.length;
    for(i = 0; i < len; i++){
        for(j = i + 1; j < len; j++){
            if(arr[i] == arr[j]){
                arr.splice(j,1);
                len--;
                j--
            }
        }
    }
    return arr
}

三、利用indexOf去重

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

四、利用includes去重

function funInclude(arr){
    let newArr = [];
    for(let i = 0; i < arr.length; i++){
        if(!newArr.includes(arr[i])){
            newArr.push(arr[i])
        }
    }
    return newArr
}

五、filter去重

function funFilter(arr){
    return arr.filter((item,index) => {
        return arr.indexOf(item, 0) == index
    })
}

六、Map

function funMap(arr){
    let map = new Map();
    let newArr = [];
    for(let i = 0, len = arr.length; i < len; i++){
        if(map.has(arr[i])){
            map.set(arr[i], true);
        }else{
            map.set(arr[i], false);
            newArr.push(arr[i])
        }
    }
    return newArr;
}