前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JS数组去重的三种方法

JS数组去重的三种方法

作者头像
小古哥
发布2018-03-08 17:03:35
1.1K0
发布2018-03-08 17:03:35
举报
文章被收录于专栏:小古哥的博客园

在程序中,通常解决一个问题的方法有很多种。当然这些不同思路的解决方法,在性能和效率上也有很大差异。

以下是数字去重的三种方法,

一、循环遍历法(传统思路)

最简单粗暴的算法,新建一个空数组,然后遍历原数组,将不在新数组中的项添加到新数组,最后返回新数组

代码语言:javascript
复制
function compare(arr){
    var newarr=[];//新建空数组
    for(var i=0; i<arr.length;i++){//遍历原数组
        var isadd=true;//设置标记
        for(var j=0; j<newarr.length;j++){//遍历新数组
            if(arr[i]===newarr[j]){isadd=false;break;}//如果当前原数组中的项,在新数组中存在,则标记为‘不添加’,并跳出新数组遍历
        }
        if(isadd){newarr.push(arr[i]);}//若标记为‘添加’(即遍历新数组后,没有发现相同项),则添加进新数组
    }
    return newarr;//返回新数组
}

二、排序比较法(巧妙转换)

相对第一种方法,需要每次遍历新旧两个数组,效率不高的情况。此方法先对原数组进行排序,这样每次只要与新数组的最后一项比较即可,大大提高效率

代码语言:javascript
复制
function sortarr(arr){
    var arrsort=arr.sort();//对原数组进行排序
    var newarr=[];//新建空数组
    newarr.push(arrsort[0]);//将排序后数值的第一项给添加到新数组
    for(var i=1;i<arrsort.length;i++){//遍历排序后的数组
        if(arrsort[i]!==newarr[newarr.length-1]){newarr.push(arrsort[i])}//若当前项与新数组最后一项不同,这添加到新数组
    }
    return newarr;//返回新数组
}

三、对象属性法(另辟新径)

相对前两种方法通过比较的方式,此方法主要利用了对象属性(key值)不可重复的特性,将数组中各项赋值给一个新对象,重复将自动覆盖。最后从对象上遍历出属性即可。

代码语言:javascript
复制
function attribute(arr){
    var obj={};//新建空对象
    var newarr=[];//新建空数组
    for(var i=0; i<arr.length;i++){obj[arr[i]]=null;}//将原数组项作为对象的key进行赋值
    for( var attr in obj){newarr.push(Math.floor(attr));}//遍历对象,取出key值添加到新数组
    return newarr;//返回新数组
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-05-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档