美文网首页
数组去重

数组去重

作者: 他在发呆 | 来源:发表于2017-05-21 17:53 被阅读0次
let array = [1,2,3,3,4,2,4,5];

方法一(通过indexOf,返回该数组下表)

        Array.prototype.unique = 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]);
                console.log(this.indexOf(this[i]),i);
            }
            return n;
        }
调用
    array.unique()

方法二(通过sort从小到大排序,然后遍历数组比较相邻元素是否相等)

    Array.prototype.unique = 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;
        }
        调用
        array.unique();

方法三(通过哈希表)

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

散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表


方法四(类似于方法一)
方法一是假设当前元素的下标是否是重复的
方法四是判断有没有这个下标,没有返回-1;

        Array.prototype.unique = function()
        {
            var n = []; //一个新的临时数组
            for(var i = 0; i < this.length; i++) //遍历当前数组
            {
                //如果当前数组的第i已经保存进了临时数组,那么跳过,
                //否则把当前项push到临时数组里面
                console.log(n.indexOf(this[i]),n);
                if (n.indexOf(this[i]) == -1) n.push(this[i]);
            }
            return n;
        }
        array.unique()

相关文章

  • Array集结号

    实现数组去重的几种方法 数组去重一 数组去重二 利用数组indexof+push实现数组去重 数组去重三 利用对象...

  • 实现数组去重有哪些方式

    简单的数组去重 数组对象去重

  • 数组去重的四种方法

    利用双for循环去重 利用对象数组去重 利用对象数组去重并且记录重复次数 通过创建一个新数组进行数组去重

  • js数组去重、对象数组去重

    普通数组去重 一、普通数组去重 方法一:遍历数组法 方法二:排序法 方法三:对象法 对象数组去重 方法一:将对象数...

  • javascript数组去重,数组对象去重

    利用Reduce去重 function unique(arr) {var obj = {};arr = arr.r...

  • js:数组去重

    数组去重的常见写法: 数组去重封装成方法: es6的数组去重(Array.from):

  • ES6数组去重

    普通数组去重 方法1 方法2 对象数组去重

  • js reduce去重用法

    reduce不仅仅可以数据累加,还可以实现去重效果。 重复次数计算 数组去重 数组对象去重,转为数组 对象去重

  • 数组去重

    传统方法 ES6 扩展 传统方法 最后再写到 Array.prototype 原型中

  • 数组去重

    老题了。。虽然网上一搜一大堆,还是自己想了想,自己动笔写了几种。

网友评论

      本文标题:数组去重

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