js查找结构不同的两个数组中相同的元素并删除元素

news2025/1/13 16:59:30

准确的是循环中删除数组元素会遇到的bug及解决办法。

删除后需要注意元素的索引值 ,比如以下案例,删除2之后索引值继续 + 1,但原数组索引已经变化了,所以会出现遍历漏掉元素和索引值对不上的情况


然后就把forEach循环改成了for循环,可以控制i

即每次删除之后都使索引值 i - 1,但每次删除数组元素后都需要重新调整数组的索引,如果数组元素比较多的话,性能就会很差

const arr = [1, 2, 3, 4, 5];
for (let i = 0; i < arr.length; i++) {
  if (arr[i] === 2 || arr[i] === 4) {    
  	arr.splice(i, 1);    i--; 
   }}
   console.log(arr); // [1, 3, 5]

所以我们改用反向for循环,倒序遍历数组元素,可以有效解决重排索引的问题,提高性能。

先从数组长度-1索引出发,逐渐减小索引值,来访问数组。使用该方法,可以避免数组增量位移,提高了代码效率。

const arr = [1, 2, 3, 4, 5];
for (let i = arr.length - 1; i >= 0; i--) {  
if (arr[i] % 2 === 0) {    
	arr.splice(i, 1);  
}}
console.log(arr); // [1, 3, 5]

然后我们当前的需求是在两个 数组中找重复的元素删掉,虽然两个 数组结构不一样,但是逻辑是一样的,最外卖使用forEach循环或者for循环都可以,把要操作的数组放内循环即可。
在这里插入图片描述
在这里插入图片描述

代码实现

       // 如果数据已有此条数据,删除此条数据
          let arr = changeplan.permatmac.person;
          arr.forEach((item) => {
            for (let i = reslist.length - 1; i >= 0; i--) {
             const ele = reslist[i]
              if (item.name === ele[0].cont && item.planNum === Number(ele[1].cont) && item.unit === ele[2].cont) {
                reslist.splice(i, 1);
              }
            }
          })

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/944873.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

龙蜥白皮书精选:SysAK—大规模复杂场景的系统运维利器

文/系统运维 SIG 01 概述 SysAK&#xff08;System Analyse Kit&#xff09;是龙蜥社区系统运维 SIG&#xff0c;通过对过往百万服务器运维经验进行抽象总结&#xff0c;而提供的一个全方位的系统运维工具集&#xff0c;可以覆盖系统的日常监控、线上问题诊断和系统故障修复…

Java 中数据结构LinkedList的用法

LinkList 链表&#xff08;Linked list&#xff09;是一种常见的基础数据结构&#xff0c;是一种线性表&#xff0c;但是并不会按线性的顺序存储数据&#xff0c;而是在每一个节点里存到下一个节点的地址。 链表可分为单向链表和双向链表。 一个单向链表包含两个值: 当前节点…

MySQL 日期格式 DATETIME 和 TIMESTAMP

MySQL日期格式介绍 存储日期的方式mysql中存储日期的格式datetimetimestampDatetime和Timestamp的比较相同点&#xff1a;不同点&#xff1a; 数值型时间戳&#xff08;INT&#xff09;DATETIME vs TIMESTAMP vs INT&#xff0c;怎么选&#xff1f; 存储日期的方式 字符串Date…

Kotlin协程简述与上下文和调度器(Dispatchers )

协程概述 子程序或者称为函数&#xff0c;在所有的语言中都是层级调用&#xff0c;如&#xff1a;A调用B&#xff0c;B在执行过程中又调用了C&#xff0c;C执行完毕返回&#xff0c;B执行完毕返回&#xff0c;最后是A执行完毕。所以子程序是 通过栈来实现的&#xff0c;一个线…

Sar测试简介

1.Sar 简介 SAR即英语“Specific Absorption Rate”的缩写。SAR值一般指手机产品中电磁波所产生的热能&#xff0c;它是对人体产生影响的衡量数据&#xff0c;单位是W/Kg&#xff08;瓦/公斤&#xff09; 对于测量手机产品的“SAR”&#xff0c;通俗地讲&#xff0c;就是测量手…

STM32f103入门(4)对射式红外传感器计次(外部中断)

中断:在主程序运行过程中&#xff0c;出现了特定的中断触发条件 (中断源)&#xff0c;使得CPU暂停当前正在运行的程序&#xff0c;转而去处理中断程序处理完成后又返回原来被暂停的位置继续运行中断优先级:当有多个中断源同时申请中断时&#xff0c;CPU会根据中断源的轻重缓急进…

国内的化妆品核辐射检测

化妆品核辐射物质检测是指检测化妆品中的放射性物质&#xff0c;包括放射性核素和放射性同位素。这些放射性物质主要来源于环境中的放射性污染&#xff0c;如空气、水和土壤中的放射性物质&#xff0c;以及化妆品生产过程中的放射性污染&#xff0c;如原料、设备、工艺等。化妆…

如何理解IaaS、PaaS、SaaS?盘点受欢迎的八大SaaS平台!

如何理解IaaS、PaaS、SaaS&#xff1f;他们各自的优势在哪里&#xff1f;我们又应该如何选择&#xff1f;本篇将带大家深入浅出的了解IaaS、PaaS、SaaS&#xff0c;并为大家盘点2023最受欢迎的SaaS平台。 通过本文你将了解&#xff1a; IaaS、PaaS、SaaS分别是什么我们该如何理…

高德地图api给点设置闪烁动画

首先高德提供了点动画两种选择和掉落弹跳&#xff0c;可以在属性中定义也可以setAnimation 但是没闪烁 所以css&#xff0c;遍历所有点标记找到要闪烁的点给一个class在deepcss一个动画 js function setshadow(params) { //获取地图所有点标记let data map.getAllOverlays(&…

Mac下使用Homebrew安装MySQL5.7

Mac下使用Homebrew安装MySQL5.7 1. 安装Homebrew & Oh-My-Zsh2. 查询软件信息3. 执行安装命令4. 开机启动5. 服务状态查询6. 初始化配置7. 登录测试7.1 终端登录7.2 客户端登录 参考 1. 安装Homebrew & Oh-My-Zsh mac下如何安装homebrew MacOS安装Homebrew与Oh-My-Zsh…

在字节划水5年被优化,太无情了...

前言 先简单说下&#xff0c;涵哥是某不知名 985 的本硕&#xff0c;17 年毕业加入字节&#xff0c;以“人员优化”的名义无情被裁员&#xff0c;之后跳槽到了有赞&#xff0c;一直从事软件测试的工作。还差一个月也6年了吧&#xff0c;算是在这行的资深划水员。6年的时间也让…

广告英语翻译的原则,你了解多少

我们知道&#xff0c;广告语的特点是通俗化、口语化&#xff0c;能够吸引读者注意&#xff0c;刺激其消费欲望。因此&#xff0c;广告英语翻译也要具有强烈的感染力&#xff0c;达到其预期功能。那么&#xff0c;如何做好广告英语翻译&#xff0c;关于广告英语翻译的原则&#…

SpringBoot集成JWT token实现权限验证

先在pom中引入 JWT依赖 <!-- JWT --> <dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>4.3.0</version> </dependency> 然后引入一个生成的 token 的工具类 import cn.hutool.c…

TCP协议基础

一&#xff1a; TCP协议是什么&#xff1f; TCP协议是基于面向连接&#xff0c;可靠传输&#xff0c;基于字节流的传输层通信协议 1. 面向连接 TCP协议是一种面向连接的协议&#xff0c;意味着在双方在建立数据传输之前&#xff0c;需要进行一个逻辑上的连接&#xff0c;且是…

MySQL的mysql-bin.00xx binlog日志文件的清理

目录 引言手工清理配置自动清理 引言 公司一个项目生产环境mysql数据盘占用空间增长得特别快&#xff0c;经过排查发现是开启了mysql的binlog日志。如果把binlog日志关闭&#xff0c;如果操作万一出现问题&#xff0c;就没有办法恢复数据&#xff0c;很不安全&#xff0c;只能…

手机实景无人直播应该如何操作?

实景无人直播是一种创新的直播方式&#xff0c;通过利用实景场景进行直播&#xff0c;为观众带来真实、沉浸式的观赏和参与体验。本文将深入探讨实景无人直播的技术操作和商业思考&#xff0c;帮助读者全面了解如何搭建和运营这一新型直播模式。 一、实景无人直播的技术操作…

【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom)

文章目录 前言参考目录版本说明Windows 部署 seata-server1&#xff1a;下载压缩包2&#xff1a;文件存储模式3&#xff1a;db 存储模式3.1&#xff1a;建表3.2&#xff1a;修改配置文件3.3&#xff1a;启动脚本4&#xff1a;源码部署 Docker 部署 seata-server &#xff08;基…

报名开启!2023 SuperMap开发者大会全议程揭幕

2023年9月13日-15日&#xff0c;2023 SuperMap开发者大会(2023 SuperMap Developer Conference&#xff0c;简称SDC 2023)将在线举办&#xff0c;聚焦地理空间智能和GIS前沿技术&#xff0c;与全体开发者一起&#xff0c;探寻利用新技术简化开发流程的方法&#xff0c;商讨如何…

【pyqt5界面化开发-5】网格布局(九宫格)界面

一、网格布局 需要模块&#xff1a;QGridLayout 代码 import sys from PyQt5.QtGui import QIcon from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel, QLineEdit, QDesktopWidget, QHBoxLayout, QVBoxLayout, QGroupBox, QRadioButton, QGridLayoutc…