当前位置: 首页 > 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]

相关文章:

JS数组去重的方法

目录 1、includes 2、indexOf 3、Set结合Array.from 4、filter 5、reduce 6、使用双重for循环 介绍一下数组常用的去重复方法 以以下数组为例子来介绍&#xff0c;一维的数字类型数组&#xff1a; const arr [1, 2, 2, 2, 3, 1, 6, 4, 4, 6, 5, 7] 1、includes funct…...

Go实战训练之Web Server 与路由树

Server & 路由树 Server Web 核心 对于一个 Web 框架&#xff0c;至少要提供三个抽象&#xff1a; Server&#xff1a;代表服务器的抽象Context&#xff1a;表示上下文的抽象路由树 Server 从特性上来说&#xff0c;至少要提供三部分功能&#xff1a; 生命周期控制&…...

C#中接口设计相关原则

在C#中&#xff0c;接口&#xff08;Interface&#xff09;是一种引用类型&#xff0c;它定义了一个契约&#xff0c;指定了一个类必须实现的成员&#xff08;属性、方法、事件、索引器&#xff09;。接口不提供这些成员的实现&#xff0c;只指定成员必须按照特定的方式被实现。…...

Pytorch学习笔记——卷积操作

一、认识卷积操作 卷积操作是一种数学运算&#xff0c;它涉及两个函数&#xff1a;输入函数&#xff08;通常是图像&#xff09;和卷积核&#xff08;也称为滤波器或特征检测器&#xff09;。卷积核在输入函数上滑动&#xff0c;将核中的每个元素与其覆盖的输入函数区域中的对应…...

探索鸿蒙开发:鸿蒙系统如何引领嵌入式技术革新

嵌入式技术已经成为现代社会不可或缺的一部分。而在这个领域&#xff0c;华为凭借其自主研发的鸿蒙操作系统&#xff0c;正悄然引领着一场技术革新的浪潮。本文将探讨鸿蒙开发的特点、优势以及其对嵌入式技术发展的深远影响。 鸿蒙操作系统的特点 鸿蒙&#xff0c;作为华为推…...

chrome extension插件替换网络请求中的useragent

感觉Chrome商店中的插件不能很好的实现自己想要的效果,那么就来自己动手吧。 本文以百度为例: 一般来说网页请求如下: 当前使用的useragent是User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safar…...

PHP基础【介绍,注释,更改编码,赋值,数据类型】

源码 <?php //单行注释 /* 多行注释 *///通过header()函数发送http头的请求信息用来指定页面的字符集编码 header("Content-type:text/html;Charsetutf-8"); //告诉浏览器&#xff0c;当前页面的内容类型是HTML&#xff0c;并且页面内容使用的是UTF-8编码。//ph…...

ASP.NET小型证券术语解释及翻译系统的设计与开发

摘 要 在系统设计上&#xff0c;综合各种翻译类型网站优缺点&#xff0c;设计出具有任何使用者都可添加术语信息的且只有管理员能够实现术语修改及删除等独特方式的术语查看管理系统。此方式能够使术语量快速增大&#xff0c;并且便于使用者及管理员操作&#xff0c;满足相互…...

硬件知识积累 音频插座的了解,看音频插座的原理图来了解音频插座的引脚。

1. 音频接口 音频插座是一种用于连接音频信号线路的电子元件&#xff0c;常见于音频设备&#xff08;如音响、耳机、话筒等&#xff09;中。它的主要作用是将电子信号转化为声音信号&#xff0c;以满足人们对于音乐、电影、游戏等方面的需求。 根据插头形状的不同&#xff0c;音…...

error LNK2001: 无法解析的外部符号 “__declspec(dllimport) public: __cdecl ......

运行程序时&#xff0c;报如上图所示错误&#xff0c;其中一条是&#xff1a; ReflectionProbe.obj : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: __cdecl osg::Object::Object(bool)" (__imp_??0ObjectosgQEAA_NZ) 报这个错误一般是因为…...

邮箱Webhook API发送邮件的性能怎么优化?

邮箱Webhook API发送邮件的步骤&#xff1f;如何用邮箱API发信&#xff1f; 随着业务规模的扩大&#xff0c;如何高效地通过邮箱Webhook API发送邮件&#xff0c;成为了许多企业面临的关键问题。下面&#xff0c;AokSend将探讨一些优化邮箱Webhook API发送邮件性能的方法。 邮…...

并发编程实现

一、并行编程 1、Parallel 类 Parallel类是System.Threading.Tasks命名空间中的一个重要类&#xff0c;它提供数据并行和任务并行的高级抽象。 For和ForEach Parallel类下的For和ForEach对应着普通的循环和遍历(普通的for和foreach)&#xff0c;但执行时会尝试在多个线程上…...

基于EBAZ4205矿板的图像处理:12图像二值化(阈值可调)

基于EBAZ4205矿板的图像处理&#xff1a;12图像二值化(阈值可调) 我的项目是基于EBAZ4205矿板的阈值可调的图像阈值二值化处理&#xff0c;可以通过按键调整二值化的阈值&#xff0c;key1为阈值加1&#xff0c;key4为阈值减1&#xff0c;key2为阈值加10&#xff0c;key5为阈值…...

人大金仓数据库报com.kingbase8.util.KSQLException: 致命错误: 用户 “SYSTEM“ Password 认证失败

com.kingbase8.util.KSQLException: 致命错误: 用户 “SYSTEM” Password 认证失败 解决办法&#xff1a; 问题在于用户权限只不足&#xff0c;相关配置文件在一般在 /data/sys hba.conf,修改IPV4 local connections选项中的改为trust。...

文件加密软件哪个好?文件加密软件排行榜前十名(好用软件推荐)

文件加密软件哪个好&#xff1f;这是许多个人和企业用户在面临数据保护需求时所关心的问题。随着数字化时代的推进&#xff0c;数据安全问题日益凸显&#xff0c;文件加密软件成为了保护数据安全的重要手段。本文将为您介绍当前市场上排名前十的文件加密软件&#xff0c;帮助您…...

Netty的第一个简单Demo实现

目录 说明需求ClientServer写法总结 实现运行 说明 Netty 的一个练习&#xff0c;使用 Netty 连通 服务端 和 客户端&#xff0c;进行基本的通信。 需求 Client 连接服务端成功后&#xff0c;打印连接成功给服务端发送消息HelloServer Server 客户端连接成功后&#xff0…...

K8S 哲学 - 服务发现 services

apiVersion: v1 kind: Service metadata:name: deploy-servicelabels:app: deploy-service spec: ports: - port: 80targetPort: 80name: deploy-service-podselector: app: deploy-podtype: NodePort service 的 endPoint &#xff08;ep&#xff09; 主机端口分配方式 两…...

Springboot工程创建

目录 一、步骤 二、遇到的问题及解决方案 一、步骤 打开idea,点击文件 ->新建 ->新模块 选择Spring Initializr&#xff0c;并设置相关信息。其中组为域名&#xff0c;如果没有公司&#xff0c;可以默认com.example。点击下一步 蓝色方框部分需要去掉&#xff0c;软件包…...

日本站群服务器的优点以及适合该服务器的业务类型?

日本站群服务器的优点以及适合该服务器的业务类型? 日本站群服务器是指位于日本地区的多个网站共享同一台服务器的架构。这种服务器架构有着诸多优点&#xff0c;使其成为许多企业和网站管理员的首选。以下是日本站群服务器的优点以及适合该服务器的业务类型的分析&#xff1…...

堆的应用2——TOPK问题

TOPK问题 TOP-K问题&#xff1a;即求数据结合中前K个最大的元素或者最小的元素&#xff0c;一般情况下数据量都比较大。 比如&#xff1a;专业前10名、世界500强、富豪榜、游戏中前100的活跃玩家等。 情况1——数据量小 对于Top-K问题&#xff0c;能想到的最简单直接的方式就…...

NotebookLM实战指南(NLP任务辅助黄金公式首次公开)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM实战指南&#xff08;NLP任务辅助黄金公式首次公开&#xff09; NotebookLM 是 Google 推出的基于可信来源驱动的 AI 助手&#xff0c;专为研究者与工程师设计&#xff0c;其核心能力在于“…...

消息队列选型对比

目录消息队列选型对比&#xff1a;从核心原理到场景化决策一、快速选型&#xff1a;一张表看懂核心差异二、深入解读&#xff1a;每款 MQ 的设计哲学与适用边界2.1 RabbitMQ&#xff1a;灵活路由的企业级消息代理2.2 Apache Kafka&#xff1a;吞吐为王的日志流平台2.3 Apache R…...

IoT产品创新方法论:构建“场景 × 技术 × 数据 × 商业”的系统创新能力

目录 一、 问题与背景 二、 本文将系统讲解 三、 什么是IoT产品创新 3.1 核心定义 3.2 IoT创新的核心变化 3.3 创新的三种层级(阶梯论) 四、 IoT产品创新结构模型(核心框架) 4.1 四维创新模型(核心体系) 4.2 创新演进路径 五、 五大IoT创新方法论(核心武器库)…...

Markdown基础功能

原文&#xff1a;Markdown基础语法介绍 | Colin Gretzky的博客 本文介绍 Markdown 笔记格式的基础功能&#xff0c;涵盖核心语法和使用要点&#xff0c;适合初学者快速上手。 Markdown 简介 Markdown 是一种轻量级的标记语言&#xff0c;由 John Gruber 于 2004 年设计。它的核…...

MUMmer4:基因组比对领域的终极解决方案

MUMmer4&#xff1a;基因组比对领域的终极解决方案 【免费下载链接】mummer Mummer alignment tool 项目地址: https://gitcode.com/gh_mirrors/mu/mummer 在基因组学研究领域&#xff0c;高效、准确的序列比对工具是解开生命密码的关键钥匙。MUMmer4作为一款开源的快速…...

2025届学术党必备的六大AI科研方案推荐榜单

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 于当下&#xff0c;各类文献产出需求呈现出多元态势&#xff0c;一键生成论文功能作为辅助工…...

5 月 8 日 AIoT 双标落地,中国智能基础设施建设开启十年竞速!

AIoT 产业里程碑&#xff1a;5 月 8 日双标落地2026 年 5 月 8 日&#xff0c;注定会被写进中国 AIoT 产业的发展史。多个国家级部委在同一天落下两枚关乎未来十年的战略锚点。第一枚&#xff0c;是国家网信办、国家发展改革委、工业和信息化部联合印发的 《智能体规范应用与创…...

大疆智图+B3DM切片+Cesium:5分钟搞定倾斜摄影三维模型在线发布

大疆智图B3DM切片Cesium&#xff1a;零代码实现倾斜摄影三维模型Web发布全指南 当无人机航拍的倾斜摄影数据需要快速在Web端展示时&#xff0c;技术栈的衔接往往成为最大障碍。本文将手把手带您实现从大疆智图生成B3DM切片到Cesium可视化呈现的完整流程&#xff0c;全程无需编写…...

别再被代码劝退!用LilyPond 2.20.0写《铃儿响叮当》乐谱,5分钟搞定你的第一份五线谱

别再被代码劝退&#xff01;用LilyPond 2.20.0写《铃儿响叮当》乐谱&#xff0c;5分钟搞定你的第一份五线谱 第一次看到LilyPond的界面&#xff0c;很多人会下意识皱眉——满屏的代码和符号&#xff0c;仿佛在劝退非程序员背景的音乐爱好者。但事实上&#xff0c;用LilyPond制…...

低代码平台表单设计器 unione form editor 组件介绍--文件上传

低代码平台表单设计器 unione form editor 组件介绍--文件上传 在企业级低代码表单开发中&#xff0c;文件上传组件是实现“附件提交、资料归档、证据留存”的核心组件&#xff0c;广泛应用于合同上传、简历提交、凭证上传、图片上传等场景。不同于其他输入类组件&#xff0c;文…...