数组去重

数组去重可以使用indexOf()方法进行检测,但是这样的效率实在是低,我们可以使用hash表的形式来进行对每一个数组进行存储,这样节省了时间,但是占据了一定的空间。

Array.prototype.unique2 = function()
{
    var n = {},r=[]; //n为hash表,r为临时数组
    for(var i = 0; i < this.length; i++) //遍历当前数组
    {
        if (!n[this[i]]) //如果hash表中没有当前项
        {
            n[this[i]] = true; //存入hash表
            r.push(this[i]); //把当前数组的当前项push到临时数组里面
        }
    }
    return r;
}

还有第二种比较好的办法,就是先将数组进行排序,然后比较相邻的两个数组是否相等,这样在时间上有一定的增长,但是也节省了很多空间,在综合考虑相对比较不错,代码如下:

Array.prototype.unique4 = function()
{
    this.sort();
    var re=[this[0]];
    for(var i = 1; i < this.length; i++)
    {
        if( this[i] !== re[re.length-1])
        {
            re.push(this[i]);
        }
    }
    return re;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.遍历数组法最简单的去重方法,实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中;注意点:判断值...
    祈澈菇凉阅读 11,378评论 1 37
  • js去重的几种方法: 1.使用indexOf()方法---[a.检查当前数组是否存在;b.比较数组的下标---(借...
    LuckyS007阅读 3,923评论 0 3
  • 方法一(通过indexOf,返回该数组下表) 方法二(通过sort从小到大排序,然后遍历数组比较相邻元素是否相等)...
    他在发呆阅读 1,410评论 0 0
  • 已知排序的array,或者不在乎去重之后的结果顺序 Solution 1可以做一次循环,判断当前的item是否等于...
    公子七阅读 4,554评论 1 2
  • 前言 最近学习着,突然发现自己心中总有些惶恐,因为发现自己写过的一些东西好像忘记了,又好像是以前就没有弄彻底,所以...
    lane_developer阅读 3,047评论 0 2