美文网首页
JS数组去重方法的比较

JS数组去重方法的比较

作者: 荞叶 | 来源:发表于2016-12-19 11:44 被阅读15次
Paste_Image.png

直接上代码,代码注释详细

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>demo4</title>
    <style>
        .g{
            background-color: green;
            height:5px;
            display:inline-block;
        }
    </style>
</head>
<body>
    <div>
        <div id="unique1">
            <label>unique1</label>
            <div class="g"></div>
        </div>
        <div id="unique2">
            <label>unique2</label>
            <div class="g"></div>
        </div>
        <div id="unique3">
            <label>unique3</label>
            <div class="g"></div>
        </div>
        <div id="unique4">
            <label>unique4</label>
            <div class="g"></div>
        </div>
    </div>
    <script>

    Array.prototype.unique1 = function()
    {
        var n = []; //一个新的临时数组
        for(var i = 0; i < this.length; i++) //遍历当前数组
        {
            //如果当前数组的第i已经保存进了临时数组,那么跳过,
            //否则把当前项push到临时数组里面
            if (n.indexOf(this[i]) == -1) n.push(this[i]);
        }
        return n;
    }
    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.unique3 = function(){
        var n = [ this[ 0 ] ]; //结果数组
        for( var i = 1; i < this.length; i++ ) //从第二项开始遍历
        {
            //如果当前数组的第i项在当前数组中第一次出现的位置不是i,
            //那么表示第i项是重复的,忽略掉。否则存入结果数组
            if( this.indexOf( this[ i ] ) == i ) n.push( this[ i ] );
        }
        return n;
    }

    Array.prototype.unique4 = function(){
        //数组排序
        this.sort();
        var re = [ this[ 0 ] ];
        for( var i = 1; i < this.length; i++ )
        {
            //取数组的第i项和临时数组的最后一项目对比,如果不等,就存入临时数组。
            if( this[ i ] !== re[ re.length - 1 ] )
            {
                re.push( this[ i ] );
            }
        }
        return re;
    }

    //随机生成数组
    function randomArr(num){
        var arr = [];
        for( var i = 0; i < num; i++ )
        {
            //随机生成1-num之间的数字
            arr.push( Math.floor( Math.random() * num ) + 1 );
        }
        return arr;
    }

    function cuttime(idname){
        var sTime = new Date().getTime();
        //调用数组去重的方法
        arr[idname]&&arr[idname]();
        var eTime = new Date().getTime();
        var _time = eTime-sTime;
        //改变横条的长度
        document.getElementById(idname).children[1].style.width = _time+"px";
    }

    //随机生成1-10000的数字的数组
    var arr = randomArr(10000);

    cuttime("unique1");
    cuttime("unique2");
    cuttime("unique3");
    cuttime("unique4");


    </script>
</body>
</html>

总结:结果表明第二种方法远远快于其他两种方法。 但是内存占用方面应该第二种方法比较多,因为多了一个hash表。这就是所谓的空间换时间。

相关文章

  • JS数组去重方法的比较

    直接上代码,代码注释详细 总结:结果表明第二种方法远远快于其他两种方法。 但是内存占用方面应该第二种方法比较多,因...

  • js数组去重的几种方法

    js去重的几种方法: 1.使用indexOf()方法---[a.检查当前数组是否存在;b.比较数组的下标---(借...

  • js中数组对象去重的方法

    采用数组中的reduce方法,遍历数组,也是通过对象访问属性的方法 参考js中数组对象去重的方法

  • 前端开发备忘录

    js 数组去重的方法 最常用的方式 对象键值法去重 es6 Set方法一键去重 js常见的循环与遍历以及不同循...

  • js 数组去重方法

    1、借助ES6[https://so.csdn.net/so/search?q=ES6&spm=1001.2101...

  • JS数组去重常见方法分析

    数组去重是开发中经常会遇到的问题,也是面试时经常会考到的。JS实现数组去重可以有多种方法: 一、简单的去重方法 用...

  • JS 数组去重的方法

  • js数组去重的方法

    第一种 ES6 中new set 第二种 利用indexof 第三种 利用对象的key值唯一的特性 第四种 利用i...

  • js 数组去重的方法

    1.最傻的方法,就是for 循环,具体的实例有很多。1.1 新数组,与旧数组循环比较,如果不等,将旧数组的当前项加...

  • 5.18 总结

    1 数组去重 js数组去重的常用方法总结 2 定时器的返回值是定时器的编号 定时器的执行;(全部js代码执...

网友评论

      本文标题:JS数组去重方法的比较

      本文链接:https://www.haomeiwen.com/subject/eectvttx.html