web前端开发技术博客
当前位置: 前端技术 > javascript 数组去重方法有哪些

javascript 数组去重方法有哪些

2019-06-25 分类:前端技术 作者:码云 阅读(1980)

javascript数组去重对于前端开发的小伙伴来说再熟悉不过了,为什么要整理一篇关于数组去重的方法总结呢?是因为最近面试一些小伙伴,要么说不清要么就是说不全,而在平时工作当中经常会遇到数组去重的需求,所以在这里整理一下有哪些方法可以实现数组的去重。

双层for循环

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function noRepeat1(arr){
    // 第一层for用来控制循环的次数
    for(var i=0; i<arr.length; i++){
        //第二层for 用于控制与第一层比较的元素
        for(var j=i+1; j<arr.length; j++){
            //如果相等
            if(arr[i] == arr[j]){
                //删除后面的 即第 j个位置上的元素  删除个数 1
                arr.splice(j,1);
                // j--很关键的一步  如果删除 程序就会出错
                //j--的原因是 每次使用splice删除元素时 返回的是一个新的数组
                // 这意味这数组下次遍历是 比较市跳过了一个元素
                /*
                    例如: 第一次删除后 返回的是 1 1 3 2 1 2 4
                 *  但是第二次遍历是 j的值为2  arr[2] = 3
                 *  相当于跳过一个元素 因此要 j--
                 * */
                j--;

            }

        }
    }

    return arr;
}

indexof或者includes

1
2
3
4
5
6
7
8
9
10
function removeSameEle(arr){
    let res=[];
    for(var i=0,len=arr.length;i<len;i++){
        //if(!res.includes(arr[i])){
        if(res.indexof(arr[i])<0){//判断结果中是否存在该数据了
            res.push(arr[i])
        }
    }
    return res;
}

filter方法

1
2
3
4
5
6
function removeSameEle(arr){
    let res=arr.filter((item,index,arr)=>{
        return arr.indexOf(item)===index;
    });
    return res;
}

set唯一值去重

此方法只能用于对简单数组进行去重。

1
2
3
4
function removeSameEle(arr){
    let res=new Set(arr);
    return [...res];
}

sort排序后去重

1
2
3
4
5
6
7
8
9
10
11
12
13
function removeSameEle(arr){
    let res=[];
    let sortedArr=arr.sort();
    for(let i=0,len<sortedArr.length;i<len-1;i++){
        if(i==0||sortedArr[i]!==sortedArr[i+1]){
            res.push(sortedArr[i]);
             if(i===(len-2)){
                res.push(sortedArr[i+1]);
            }
        }
    }
    return res;
}

使用object.keys()去重

1
2
3
4
5
6
7
8
9
10
11
12
13
function removeSameEle(arr){
    let res=[];
    let obj={};
    arr.forEach((item,index)=>{
        if(!obj[item]){
            obj[item]=item
        }
    });
    for(let value of Object.values(obj)){
        res.push(value);
    }
    return res;
}

以上所述是前端教程给大家介绍的JS实现数组去重方法总结,希望对大家有所帮助,如果大家有任何疑问请给我留言,我会及时回复大家的。在此也非常感谢大家对码云笔记网站的支持!

「两年博客,如果觉得我的文章对您有用,请帮助本站成长」

赞(0) 打赏

觉得文章有用就打赏一下文章作者

支付宝
微信
0

觉得文章有用就打赏一下文章作者

支付宝
微信

上一篇:

下一篇:

共有 0 条评论 - javascript 数组去重方法有哪些

博客简介

码云笔记: mybj123.com,一个关注Web前端开发技术的博客,主要记录和总结前端工作中常用的知识及我的生活。
更多博客详情请看关于博客

精彩评论

服务热线:
 13888888888

 QQ在线交流