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

2023-10-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);
              }
            }
          })
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 由于 apollo-client 未定义,无法解构 GraphQL 查询?

    我正在寻找调试与错误消息相关的问题 未捕获的类型错误 无法解构 0 apollo client WEBPACK IMPORTED MODULE 4 useQuery 因为它未定义 Context 我正在为我的 React js 项目设置后端
  • ReferenceError:regeneratorRuntime未定义(但在范围内工作)

    我遇到过这种奇怪的情况 ReferenceError regeneratorRuntime is not defined 我已经设法在一个非常小的设置中重现 与同一问题上的类似问题相比 并且还注意到一些奇怪的行为 具体取决于是否使用范围 以
  • Chart.js 在初始化时设置活动段

    我正在使用 Chart js v2 并且尝试在加载图表时模拟圆环图上某个段的 悬停状态 因此看起来有一个部分已突出显示 我已经搜索和梳理了代码一天 但找不到一个好的方法来做到这一点 提前致谢 设置片段的悬停样式有点令人困惑 因为它没有真正记
  • Javascript Promise“then”始终运行,即使 Promise 未能执行

    我希望当调用第二个 then 时不执行第三个 then 但是 即使 Promise 被拒绝 调用第二个 then 并且代码返回 rejected 然后返回 undefined 它仍然调用第三个 then 如何不运行第三个 then 这样 未
  • 为什么 iife 在一个简单的例子中不起作用?

    我不明白为什么函数表达式调用不起作用并抛出错误 你能给我解释一下吗 var a function x alert x function a 1 谢谢大家 任务比我想象的要容易得多 这是因为 JS 将 IIFE 解析为函数的参数调用 这样做时
  • 如何修改每个JSON对象javascript

    我想修改里面的每个 JSON 值cooldown object cooldown user 1 This user2 0 This 在 Javascript 中使用 for 语句 我研究了好几个小时 只找到了内部的 blocks Edit
  • 如何更改 Google Maps v3 API for Directions 中的开始和结束标记图像

    我使用 DirectionsRender 绘制了一条路线 但我不知道如何用我自己的标记替换通用的 Google 标记 我知道并在正常的谷歌地图情况下使用它 但发现很难用开始和结束的方向标记来做到这一点 如果这是一个愚蠢的问题 感谢您的任何建
  • Draggable JS Bootstrap 模式 - 性能问题

    对于工作中的项目 我们在 JavaScript 中使用 Bootstrap Modal 窗口 我们想让一些窗口可移动 但我们遇到了 JQuery 的性能问题 myModal draggable handle modal header Exa
  • 如何将函数附加到弹出窗口关闭事件(Twitter Bootstrap)

    我做了一些搜索 但我只能认为我可以将事件附加到导致其关闭的按钮 https stackoverflow com questions 13205103 attach event handler to button in twitter boo
  • 如何纠正流警告:解构(缺少注释)

    我正在编写一个小型 React Native 应用程序 并且正在尝试使用 Flow 但我无法在任何地方真正获得有关它的正确教程 我不断收到错误 destructuring Missing annotation 有关 station 这段代码
  • 将 GMT 时间转换为当地时间

    我以这种格式从我的服务器获取 GMT 时间 Fri 18 Oct 2013 11 38 23 GMT 我的要求是使用Javascript将此时间转换为本地时间 例如 如果用户来自印度 首先我需要采用时区 5 30并将其添加到我的服务器时间并
  • Chrome 扩展程序在代码中使用 client_secret

    我正在开发具有自己的 oAuth 授权的 Google Chrome 扩展 当然 我必须使用 client id 和 client secret 作为请求令牌 有什么办法可以向用户隐藏这些数据吗 由于此请求只是 javascript 源代码
  • 检查 jQuery 1.7 中是否存在基于文本的选择选项

    所以我有以下 HTML 片段
  • 将 UMD Javascript 模块导入浏览器

    你好 我正在对 RxJS 进行一些研究 我可以通过在浏览器中引用它来使用该库 如下所示 它使用全局对象命名空间变量 Rx 导入 我可以制作可观察的东西并做所有有趣的事情 当我将 src 更改为指向最新的 UMD 文件时 一切都会崩溃 如下所
  • Javascript 假值(null、未定义、false、空字符串:“”或 '' 和 0)和比较(==)运算符 [重复]

    这个问题在这里已经有答案了 当我使用任何一个值时 null undefined false 0 in a if陈述 它总是被评估为谬误 false 另外 这些值的否定 null undefined false 0 in a if语句总是被评
  • 在移动设备上滚动

    这个问题更多的是一个建议研究 我确实希望它对其他人有帮助 并且它不会关闭 因为我不太确定在哪里寻求有关此事的建议 在过去的 6 个月里 我一直在进行移动开发 我有机会处理各种设备上的各种情况和错误 最麻烦的是滚动问题 当涉及到在网站的多个区
  • Three.js 各种大小的粒子

    我是 Three js 的新手 正在尝试找出添加 1000 个粒子的最佳方法 每个粒子都有不同的大小和颜色 每个粒子的纹理是通过绘制画布创建的 通过使用粒子系统 所有粒子都具有相同的颜色和大小 为每个粒子创建一个粒子系统是非常低效的 有没有
  • 在 Javascript 中连接空数组

    我正在浏览一些代码 我想知道这有什么用处 grid push concat row 根据我的理解 它等同于 grid push row 为什么要大惊小怪 连接 你想使用 concat当您需要展平数组并且没有由其他数组组成的数组时 例如 va
  • Javascript - 水波纹效果

    我需要 JS 上的脚本 它将以 水波纹 样式更改 images html 抱歉 6MB GIF 文件 http fcuunited ru temp listening2 gif http fcunited ru temp listening
  • 如何确定所有角度2分量都已渲染?

    当所有 Angular2 组件完成渲染时 是否会触发一个角度事件 For jQuery 我们可以用 function 然而 对于 Angular2 当domready事件被触发 html 只包含角度组件标签 每个组件完成渲染后 domrea

随机推荐

  • 完备的AI学习路线(三)基础知识之python编程

    入门人工智能领域 首推Python这门编程语言 1 Python安装 Python安装包 我推荐下载Anaconda Anaconda是一个用于科学计算的Python发行版 支持 Linux Mac Windows系统 提供了包管理与环境管
  • 搜索优化剪枝策略

    状态剪枝 如果将搜索的状态看作结点 状态之间的转移看作边 搜索的过程就构建出了一棵 搜搜树 其实 这也是判定搜索题目的一个方法 所谓 剪枝 就是在搜索树上去掉一些枝杈不进行搜索 从而减少小时间消耗 搜索树的剪枝如下图所示 常用的思考策略 1
  • SpringBoot 本地大文件分隔及其合并

    需求背景 公司前端反馈使用pdf js 加载超大pdf 文件 会出现内存泄露的情况 需要后台给出优化的方案 解决办法 将本地pdf 文件大于200M 的文件进行分隔 每个分隔文件大小为10M 后台核心代码如下 RequestMapping
  • nio介绍+原理+传统IO原理+与传统IO区别+案例

    nio介绍 为所有的原始类型提供 Buffer 缓存支持 为字符集编码解码提供解决方案 Channel 一个新的原始I O 抽象 支持锁和内存映射文件的文件访问接口 提供多路 non bloking 非阻塞式的高伸缩性网络I O nio原理
  • 本地目录映射到公网访问

    1 环境搭建 1 1 nodejs安装 首先是安装nodejs 下载地址 https nodejs org zh cn download 选择windows exe版本直接下载 解压可以得到如下文件 然后添加环境变量保证在任意终端可以直接使
  • vue发ajax怎么保存数据,在vue中用localstorage将ajax数据存储到本地

    什么是localStorage 在HTML5中 新加入了一个localStorage特性 这个特性主要是用来作为本地存储来使用的 解决了cookie存储空间不足的问题 cookie中每条cookie的存储空间为4k localStorage
  • java的SAX库实现XML文件的解析

    实现XML解析有很多库 有DOM 有SAX 还有其它的 为了为后面android程序中解析XML做基础 我只学习了SAX解析XML 概述 http www sf org cn article base 200707 20374 html S
  • 软考高项之学习笔记——质量成本概念

    软考高项之学习笔记 质量成本概念 一 常见混淆概念 二 质量成本相关概念解释 1 质量成本概念 2 一致性成本 3 非一致性成本 三 历年真题 一 常见混淆概念 质量成本 一致性成本 非一致性成本 预防成本 内部失败成本 失败成本 外部失败
  • Android音频录制权限申请

    最近捣鼓录音小程序 发现很多晚上的demo 都不能运行成功 细看log发现是权限申请在Android版本中有所不同 在6 0 之后似乎需要我们动态的去通过用户是否给予权限而获得我们需要的权限 声明需要的权限 然后再需要到activity里调
  • SpringBoot+Mybatis搭建Web项目详细步骤-记录

    SpringBoot搭建Web项目详细步骤 一 IDEA快速创建SpringBoot项目 二 项目结构 1 目录结构 2 配置web端口与数据源 3 代码文件 1 pom xml 2 DAO层实体类 Employee java 3 创建和数
  • Ant Design Vue的表单布局

    在Ant Design Vue中的文本框的布局和标签的长度管理 Ant Design Vue的栅格布局使用 1 布局行列创建使用 在form中创建列和行直接复制进即可
  • 点云处理算法整理(超详细教程)十大点云数据处理技术梳理

    研究点云数据时 感觉无从下手 看看这十大点云数据处理技术 换个思路学点云 点云 定义 简言之 在获取物体表面每个采样点的空间坐标后 得到的是一个点的集合 称之为 点云 包括三维坐标 XYZ 激光反射强度 Intensity 和颜色信息 RG
  • 中国象棋(人机博弈)

    项目效果展示 走法产生 如何产生 走法产生是指将一个局面的所有可能的走法罗列出来的那一部分程序 也就是用来告诉其他部分下一部分可以网哪里走的模块 在象棋里 象可以走田 你就需要检查与这个象相关联的象位上是否有自己的棋 并且要检查其间的象眼上
  • 自守数是指一个数的平方的尾数等于该数自身的自然数。例如252=625,762=5776。输入一个自然数,判断其是否为自守数。 如果是,则输出Yes,否则输出No

    题目描述 自守数是指一个数的平方的尾数等于该数自身的自然数 例如252 625 762 5776 输入一个自然数 判断其是否为自守数 如果是 则输出Yes 否则输出No 输入 一个自然数 输出 如果是自守数 输出Yes 否则输出No 样例输
  • 【软件工具】安装和使用Miniconda来管理Python环境

    安装和使用Miniconda来管理Python环境 一 Miniconda简介 二 Miniconda的安装 1 下载 2 安装 三 Miniconda的配置 四 Miniconda的使用 1 Conda相关 2 环境管理 3 包管理 参考
  • 银河麒麟中vsftpd匿名用户相关配置常见问题及解决方法

    银河麒麟系统中通常自带vsftpd 可以通过配置vsftpd 实现在本机中搭建ftp服务器 方便文件管理使用 并且很多时候确实因为实际需要 需要配置为允许匿名用户登录并操作 但是vsfpd如果配置不好 就经常会出现很多问题 比如无法新建文件
  • NSSCTF之Web篇刷题记录(12)

    NSSCTF之Web篇刷题记录 12 NCTF 2018 签到题 鹤城杯 2021 EasyP NSSCTF 2022 Spring Recruit ezgame GXYCTF 2019 Ping Ping Ping SWPUCTF 202
  • PK体系“配齐”

    我国是人口大国 随着5G新型应用 智慧城市建设 疫情防范等信息化需求的增长 系统所需管理的数据量级越发庞大 类型越发丰富 各行业对于可信 安全的国产软件的诉求日益增强 想用对国产化 用好国产化 信息行业应用生态的建设必不可少 近日 亚信科技
  • angular中的管道(pipe) 以及自定义管道

    http bbs itying com topic 5bf519657e9f5911d41f2a341 大小写转换 p str uppercase p 转换成大写 p str lowercase p 转换成小写 2 日期格式转换 p tod
  • js查找结构不同的两个数组中相同的元素并删除元素

    准确的是循环中删除数组元素会遇到的bug及解决办法 删除后需要注意元素的索引值 比如以下案例 删除2之后索引值继续 1 但原数组索引已经变化了 所以会出现遍历漏掉元素和索引值对不上的情况 然后就把forEach循环改成了for循环 可以控制