JS数组去重

看了网上很多数组去重方法,用的比较常见的大概就几种,今天想自己来做一个总结。
部分内容参考该博客


1 . 在原数组上操作(基本方法)
思路:利用循环嵌套,判断数组中每个元素与其后面的元素是否相等,如果相等,就使用splice方法删掉后面的元素,注意j--。

function dedupe2(arr) {for (var i = 0; i < arr.length; i++) {for (var j = i + 1; j < arr.length; j++) {if (arr[i] == arr[j]) {arr.splice(j, 1);j--;}}}return arr;
}

2 . 数组去重后返回一个新数组

思路:新建一个数组,遍历需要去重的数组,使用indexOf判断新数组中是否包含之前数组中每一项,不包含就push进去。

function dedupe1(arr) {var newarr = [];for (var i = 0; i < arr.length; i++) {if (newarr.indexOf(arr[i]) == -1) {newarr.push(arr[i]);}}return newarr;
}

3 . 利用对象的属性去重
思路:每次从数组中取出一个元素,到对象中去访问这个属性,如果能访问到就说明重复。

function dedupe3(arr) {var newarr = [];var obj = {};for (var i = 0; i < arr.length; i++) {if (!obj[arr[i]]) {newarr.push(arr[i]);obj[arr[i]] = 1;}}return newarr;
}

4 . 利用ES6中的Set数据结构和扩展运算符(参考ES6标准入门)

[...new Set([array])];

5 . 还是利用ES6中的Set

function dedupe4(arr) {return Array.from(new Set(arr));
}

当然,数组去重的方法还有很多很多很多,例如常用的先排序后去重,但是我看了一些帖子,发现其中存在一些问题,排序时是用到了sort方法,但是并没有给sort方法一个正确的排序函数,默认情况下sort方法比较的是字符串,因此会出现一些问题。还有就是sort方法返回的数组也是排序后的数组,某些情况下可能不符合要求。

以上只是个人的一个小总结,代码都是经过测试后的,有问题请指正,也欢迎大家补充,谢谢。

JS数组去重方法小结相关推荐

  1. JS数组去重方法记录

    js数组去重方法 1.遍历数组,建立新数组,利用indexOf判断是否存在于新数组中,不存在则push到新数组,最后返回新数组 代码如下(示 例): function getArray(ar) {va ...

  2. js数组去重方法分析与总结

    数组去重经常被人拿来说事,虽然在工作中不常用,但他能够很好的考察js基础知识掌握的深度和广度,下面从js的不同阶段总结一下去重的方法. ES3阶段 该阶段主要通过循环遍历数组从而达到去重的目的 多次循 ...

  3. android 数组排重方法,js数组去重方法集合 - osc_779ncf3o的个人空间 - OSCHINA - 中文开源技术交流社区...

    //第一种方法,新建一个空数组,将原来的数组循环逐个与新数组的成员做比较,如果新数组没有该元素就push进来 var arr = ['a', 1, 1, 1, 2, 4, 4, 'b', 'c', ' ...

  4. 常用的js数组去重的方法

    常用的js数组去重的方法 1. 使用for循环去重 2.使用set对象去重 3.使用数组索引indexOf()方法搭配for循环去重 4.使用includes()方法搭配for循环去重 5.使用fif ...

  5. js数组去重的方法:

    js数组去重:项目中需求是选择一些数据,但是不能重复出现同样的数据,这里就要用到JS数组去重,以下几种数组去重方法简单实用哦! 方法一:利用数组的indexOf方法去重 需求: 利用indexOf判断 ...

  6. html怎么创建数组,js创建数组的三种方法 JS数组去重的几种常见方法

    JS数组有哪几种定义方式? js 里创建一个数组 那几种方式有什么区别吗?a = new Array(); b = []; 性能问题吗?? function clear(arr) { // 1 如何获 ...

  7. js数组去重(多种方法)

    1 // js数组去重 2 Array.prototype.fun1 = function(){ 3 var arr = this, 4 result = [], 5 i, 6 len = arr.l ...

  8. JS数组去重的6种算法实现

    1.遍历数组法 最简单的去重方法,实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中:注意点:判断值是否在数组的方法"indexOf"是ECMAScript5 方法 ...

  9. JS数组去重算法实现

    1.遍历数组法 最简单的去重方法, 实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中:注意点:判断值是否在数组的方法"indexOf"是ECMAScript5 方 ...

最新文章

  1. JS中的!= 、== 、!==、===的用法和区别
  2. 去掉excel保存文件时自动生成备份
  3. 页面生命周期:DOMContentLoaded, load, beforeunload, unload
  4. 多线程断点续传下载软件-闪电下载2009
  5. oracle备份与恢复--闪回技术
  6. matlab中的:的优先级_内容早期设计:内容优先
  7. 募捐名单_年度捐款,以及为什么现在应该捐款,而不是以后
  8. python中msg是什么意思,使用python解析Outlook .msg文件
  9. 【Python】极简单的方式序列化sqlalchemy结果集为JSON
  10. 通过拦截器获取控制类requestMapping注解中的属性值
  11. 6-3 二叉搜索树中的最近公共祖先 (25 分)
  12. Element-ui中table使用row-class-name无效的锅
  13. 【手写数字识别】基于matlab GUI BP神经网络手写数字识别系统【含Matlab源码 1639期】
  14. 【MySQL联合查询】内连接查询详解
  15. unity3d的下载与安装
  16. 交易系统开发(二)——行情数据
  17. 乔春洋:品牌文化的三大内涵
  18. java中OOP的概念之我见
  19. 【云原生之Docker实战】使用Docker部署Snipe-It固定资产管理平台
  20. flutter 高效计算时间差

热门文章

  1. JAVA中利用DOM解析XML文档
  2. 【感想文】感情经历,是否给你我带来的些许提升?我想,有。
  3. memcached的认识
  4. MVC架构中的Repository模式 个人理解
  5. python学习笔记-day2-dict,tuple, string常用函数
  6. 模拟器genymotion的安装与配置
  7. 《学习Opencv》第五章 习题6
  8. .net ListT
  9. RFC3261(5 协议结构)
  10. 关于datediff(year,开始日期,结束日期)中year格式的说明,特别注意year两边不能加引号,否则报错...