当前位置: 首页 > news >正文

JS数组去重的方法

目录

1、includes

2、indexOf

3、Set结合Array.from

4、filter

5、reduce

6、使用双重for循环


介绍一下数组常用的去重复方法

以以下数组为例子来介绍,一维的数字类型数组:

const arr = [1, 2, 2, 2, 3, 1, 6, 4, 4, 6, 5, 7]
1、includes
   function uniq(data) {let res = []data.forEach((item) => {if (!res.includes(item)) {res.push(item)}})return res;}console.log(uniq(arr));// [1, 2, 3, 6, 4, 5, 7]
2、indexOf
   function uniq(data) {let res = []data.forEach((item) => {const isTrue = res.indexOf(item) === -1if (isTrue) {res.push(item)}})return res;}console.log(uniq(arr));// [1, 2, 3, 6, 4, 5, 7]
3、Set结合Array.from
console.log(Array.from(new Set(arr)));
// [1, 2, 3, 6, 4, 5, 7]
4、filter
   function uniq(data) {return data.filter((item, index, all) => {return all.indexOf(item) === index})}console.log(uniq(arr));// [1, 2, 3, 6, 4, 5, 7]
5、reduce
   function uniq(data) {return data.reduce((prev, curr) => {if (!prev.includes(curr)) {prev.push(curr)}return prev;}, [])}console.log(uniq(arr));// [1, 2, 3, 6, 4, 5, 7]
6、使用双重for循环

不推荐使用,因为时间复杂度比较高,在ES6之前最常用的传统方法

   function uniq(arr) {for (let i=0,len = arr.length; i < len; i++) {for (let j = i + 1; j < len; j++) {if (arr[i] === arr[j]) {arr.splice(j, 1);j--;len--;}}}return arr;}console.log(uniq(arr));// [1, 2, 3, 6, 4, 5, 7]

http://www.lryc.cn/news/344204.html

相关文章:

  • Go实战训练之Web Server 与路由树
  • C#中接口设计相关原则
  • Pytorch学习笔记——卷积操作
  • 探索鸿蒙开发:鸿蒙系统如何引领嵌入式技术革新
  • chrome extension插件替换网络请求中的useragent
  • PHP基础【介绍,注释,更改编码,赋值,数据类型】
  • ASP.NET小型证券术语解释及翻译系统的设计与开发
  • 硬件知识积累 音频插座的了解,看音频插座的原理图来了解音频插座的引脚。
  • error LNK2001: 无法解析的外部符号 “__declspec(dllimport) public: __cdecl ......
  • 邮箱Webhook API发送邮件的性能怎么优化?
  • 并发编程实现
  • 基于EBAZ4205矿板的图像处理:12图像二值化(阈值可调)
  • 人大金仓数据库报com.kingbase8.util.KSQLException: 致命错误: 用户 “SYSTEM“ Password 认证失败
  • 文件加密软件哪个好?文件加密软件排行榜前十名(好用软件推荐)
  • Netty的第一个简单Demo实现
  • K8S 哲学 - 服务发现 services
  • Springboot工程创建
  • 日本站群服务器的优点以及适合该服务器的业务类型?
  • 堆的应用2——TOPK问题
  • leetcode-5. 最长回文子串
  • 【Flask 系统教程 1】入门及配置
  • 石家庄河北银行的
  • 【CCNP ENCOR OCG】CHAPTER 2》Spanning Tree Protocol
  • docker无法映射/挂载根目录
  • C++中不要重新定义继承而来的non-virtual函数
  • C++ 对象型参数和返回值
  • LeetCode 字符串专题——KMP算法_28. 找出字符串中第一个匹配项的下标
  • 上班不想用脑子写代码了怎么办?那就试试Baidu Comate啊宝贝
  • 【管理咨询宝藏94】某国际咨询公司供应链财务数字化转型方案
  • C++_使用邻接表(链表-指针)实现有向图[完整示例及解释]