1.利用es6的iterable数据结构set

原理:

ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。Set 本身是一个构造函数,用来生成 Set 数据结构。

(利用的算法类似'===',与'==='的区别是 ‘===’认为NaN != NaN ,set的算法认为它们是相等的,但是set认为对象都是不相等的。)

const set = new Set([1, 2, 3, 4, 4]);   [...set]   => [1, 2, 3, 4]复制代码

Array.from()可以将set结构转成数组。

distinct = (arr) =>{return Array.from(new Set(arr));
}let arr = [2,1,3,5,1,2,4];
distinct(arr);
=> [2, 1, 3, 5, 4]复制代码

2.利用排序

原理: 排序后,然后相邻元素比较

distinct = (arr) =>{let  arrSort = arr.sort();let _arr = [];for(let  i = 0; i < arrSort.length; i++){if(arrSort[i] !== arrSort[i+1]){_arr.push(arrSort[i]);}}return _arr;
}
let arr = [2,1,3,5,1,2,4];
distinct(arr);
=>[1, 2, 3, 4, 5]
复制代码

3.利用indexof,forEach

原理:利用forEach的三个参数和indexOf()的第二个参数,在数组中检测该元素后方是否有与该元素相同的元素。

distinct = (arr) =>{let _arr = [];arr.forEach((item, index, arr) => {var bool = arr.indexOf(item,index+1);if(bool === -1){_arr.push(item);}})return _arr;
}
let arr = [2,1,3,5,1,2,4];
distinct(arr);
=> [3, 5, 1, 2, 4]   //1是后面的1,2也是后出现的2.复制代码

4.利用splice

原理:splice()删除元素,会改变原数组。

distinct = (arr) =>{let len = arr.length;  for(let i = 0; i < len; i++) {  for(let j = i + 1; j < len; j++) {  if(arr[i] === arr[j]) {  arr.splice(j,1);  len--;  j--;  }  }  }  return arr;
}
let arr = [2,1,3,5,1,2,4];
distinct(arr);
=>[2, 1, 3, 5, 4]复制代码

整理了js数组去重4种方法相关推荐

  1. js 简单的数组去重13种方法

    js 数组去重 十几种数组去重的方法,有的去重构思可以大致相同. 上篇的几种数组去重 https://blog.csdn.net/weixin_47988564/article/details/106 ...

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

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

  3. JavaScript数组去重6种方法

    数组去重涉及基础知识较多,总结了以下6个方法: 双重for循环,push新数组: 双重for循环,splice原数组: 单个for循环,遍历对象属性: 单个for循环,sort排序后遍历: ES5,i ...

  4. (PASS)JAVA数组去重 三种方法 (不用集合)

    第一种方法(只学到数组的看): 定义一个新的数组长度和旧数组的长度一样,存储除去重复数据的旧数组的数据和0, package demo01;import java.sql.Array; import ...

  5. 超全的数组去重12种方法

    前言 数组去重,可以说是一个比较常见的面试题,今天来盘点一下都有哪些方法可以实现数组去重. 方法1.双重for循环 这是一个最笨的方法,双重循环. var arr = [1, 2, 3,4 ,5,6, ...

  6. c语言用hash方式数组去重,js数组去重的hash方法

    对于 JavaScript 数组去除重复项,现在有多种方法,其中一种是hash,如下: if (!Array.prototype.unique) { Array.prototype.unique = ...

  7. Js数组去重的多种方法

    方法一 原理:利用双层循环将相邻元素  arr[i]和arr[i+1] 进行比较,相等则数组删除arr[i+1]  下标元素 var arr = [1,23,1,1,1,3,23,5,6,7,9,9, ...

  8. 数组去重10种方法(干货)!!!

    1.双重for循环去重 2.利用indexOf(),判断该数值第一次出现的索引下标是不是和本身的索引下标一样,如果不一样就说明有重复 3.利用filter方法 ,如果数据数值第一次出现的索引下标和自身 ...

  9. Javascript中数组去重的六种方法

    数组去重 第一种方法: 先对数组进行排序sort(),排好序,然后把数组的当前项和后一项进行比较,相同则使用数组的splice(相同的位置,1),但是为了防止数组塌陷,每次删除数组元素的时候要把i的值 ...

最新文章

  1. 《C语言编程初学者指南》一1.5 使用程序语句
  2. 前端二十七:四彩边框
  3. 高等数学:第八章 多元函数微分法及其应用(3)方向导数 梯度 多元函数的极值
  4. 我程序中用到的第一个递归算法
  5. js post方式请求另外一个php,利用JS使用POST方式提交请求的方法(结合代码详细解答)...
  6. java激励_激励干个人java的不足之处
  7. mac安装完mysql后关机特别慢_mysql-Mac终端下遇到的问题总结
  8. 打造智能家居安防系统 七个选购常识你需懂
  9. 封装Cell(-去掉TableView那些碍眼的分割线)
  10. 大数据入门介绍和学习路线
  11. 工业产品表面缺陷检测方法——综述
  12. 1万小时后,我从外包走进了字节跳动,现在出了一本书,文末送书!
  13. 文件操作fwrite写txt文件乱码怎么办,我这里有方法解决
  14. 设计一个用户注册页面,对用户输入的内容进行有效性验证,如用户名和密码不能为空,两次输入的密码必须相同,邮箱地址必须包含“@”符号等。
  15. JDK9对String字符串的新一轮优化,不可不知
  16. 如何使用群晖nas快速收集多份文件?
  17. 玩转群晖NAS套件系列四:Audio Station安装使用保姆级教程!
  18. kettle spoon判断增量更新_使用Kettle实现数据实时增量同步--时间戳增量回滚同步...
  19. 计算机 发声原理,单片机的发声原理
  20. 面向非日本籍厨师的日本烹饪大赛:第六届日本料理世界挑战赛:冠军由Yoo Sung Yeub摘得

热门文章

  1. 常用JDK系统环境变量配置
  2. linux Boot目录满了之后的解决方法
  3. MongoDB compass 连接不上远程服务器的解决方法
  4. 是否进行“ git导出”(如“ svn导出”)?
  5. 电脑一直弹出传奇游戏网页弹窗怎么办
  6. SpringBoot整合mongodb数据库
  7. SpringMVC@RequestMapping请求方法限定与请求参数限定
  8. Makefile:宏定义EXTRA_CFLAGS += -D 与CONFIG_ =y
  9. 网络协议:关于TCP/IP,必须知道的十个知识点
  10. 暗影之枪显示连接服务器失败,暗影之枪传奇进不去怎么办?游戏更新进不去问题详解[多图]...