美文网首页
js中数组去除重复的元素

js中数组去除重复的元素

作者: AllocatorXy | 来源:发表于2017-02-10 22:03 被阅读0次

js数组去重

去除数组中重复的元素,用js实现一般来说有三种较常用的方式。

function 1

时间复杂度O(n^2)

  • 创建一个结果数组;
  • 遍历数组,每次从原始数组取出一个元素与结果数组对比;
  • 若结果数组中无该元素,将该元素存入结果数组;
Array.prototype.uniq = function() {
    let res = [ this[0] ];
    for (let i = 1; i < this.length; i++) { // 每次从原数组取一个
        let matched = false;
        for (let j = 0; j < res.length; j++) { // 将这个元素与res中每个元素对比
            if (this[i] == res[j]) { // 若匹配成功,打断第i次的内部循环
                matched = true;
                break;
            }
        }
        /* 注意这里逻辑,不能用else,否则将多将很多元素放入res */
        if (!matched) { // 若匹配不成功,将该元素放入res
            res.push(this[i]);
        }
    }
    return res;
};
function 2

这种方法效率会比function 1 高,时间复杂度为O(n),但会影响原数组顺序

  • 原数组排序,使相同元素处于相邻位置;
  • 创建一个结果数组;
  • 因为相同元素相邻,只需要将原数组每个元素与结果数组中上一个元素比较;
  • 将不同于上一个元素的元素放入结果数组;
Array.prototype.uniq = function() {
    this.sort();
    let res = [ this[0] ];
    for (let i = 1; i < this.length; i++) {
        if (this[i] != res[res.length - 1]) {
            res.push(this[i]);
        }
    }
    return res;
};
function 3

这种方法时间复杂度与第二种相同,但因为少了一次快速排序,效率最高,且不影响数组顺序

  • 创建一个结果数组和一个json对象;
  • 遍历原数组,每次查找其在json中是否有值;
  • 将不存在的放入结果数组,并在json中以该元素创建一个属性并随意赋值;
Array.prototype.uniq = function() {
    let res = [];
    let json = {};
    for (let i = 0; i < this.length; i++) {
        if (!json[this[i]]) { // 若不存在该属性,将其放入res并建立该属性到json
            res.push(this[i]);
            json[this[i]] = 1;
        }
    }
    return res;
};

相关文章

  • js中数组去除重复的元素

    js数组去重 去除数组中重复的元素,用js实现一般来说有三种较常用的方式。 function 1 时间复杂度O(n...

  • 数组

    1. 去除数组中的重复元素 题目 已知一个已经排序的数组,去除数组中的重复元素,返回数组的长度。 思路 使用双指针...

  • iOS 从数组随机取元素

    数组随机取元素 — 不考虑重复情况 数组随机取元素 — 去除重复元素

  • 数组去重

    请看下面数组,其中的元素有多次重复,请写一个函数来实现去除数组中重复的元素。 使用with改进 对象去除法 通过正...

  • js手写数组去重

    javascript数组中若存在重复元素,此时我们需要将重复的元素去除,下面我讲介绍一下几种方法进行数组元素去重 ...

  • 2018-01-18

    数组去重 去除数组中重复的元素的原理:查看该元素在当前数组中是否存在,若存在,则跳过该元素,对其不做任何处理;若不...

  • JavaScript - 利用js对象去掉数组的重复项

    由于js中对象的key值永不重复,可以将数组转化为对象,去除重复值 1. 把数组转成js的对象 2. 把当前对象,...

  • 前端JS:判断list(数组)中的json对象是否重复

    js 删除数组json中重复的元素或者对象 结果:

  • Js中去除数组中重复元素

    var b = [1,1,3,4,5,6,7,7,8,8]; // test array var arr =[]...

  • 去除已排序数组中的重复元素

    题目描述 给定一个已排序的数组,去除数组中的重复元素,只保留一个重复的元素,并且返回新的数组长度。 要求 不要给数...

网友评论

      本文标题:js中数组去除重复的元素

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