• 有一个场景,需要删除满足条件的数据
// 删除小于5的元素
let arr = [1,2,3,4,5,6,7]
  • 代码实现
      for (let i = 0, leng = arr.length; i < leng; i++) {if (arr[i] < 5) {arr.splice(i, 1);}}console.log(arr);   // [2,4,5,6,7]
  • 看的出来,最终不是我们想要的结果
  • 分析原因: 删除操作会使得对应索引值位上的元素清空,整个数组中的元素向前移动一位,补位的元素会填充到执行删除操作的索引值位置上,移位之后如果不进行任何操作继续下一个循环,会导致补位元素跳过遍历,为了防止这种补位元素跳过遍历现象,有两种方法:
  • 1. 应该在删除操作后将索引值减1,对执行删除操作的索引值位置再进行一次遍历
  • 2. 循环中索引添加递加判断,只有在不删除元素时才对索引递加
  • 改进
      for (let i = 0, leng = arr.length; i < leng; i++) {if (arr[i] < 5) {arr.splice(i, 1);i--;     // 删除操作后将索引值减1,对执行删除操作的索引值位置再进行一次遍历}}console.log(arr);   // [5, ,6, 7]
      for (let i = 0, leng = arr.length; i < leng;) {if (arr[i] < 5) {arr.splice(i, 1);}else {i++;    添加递加判断,只有在不删除元素时才对索引递加}}console.log(arr);    // [5, ,6, 7]
  • 也可以使用倒序循环删除:
      for (let i = arr.length - 1; i >= 0; i--) {if (arr[i] < 5) {arr.splice(i, 1);}}console.log(arr);   // [5, ,6, 7]
  • 还有另外一种思路是循环将不需要删除的元素推入到新的数组中,也能达到假性删除特定元素的目的。
  • 可用filter方法来实现
      arr = arr.filter(item => item >= 5)console.log(arr);   // [5, ,6, 7]

循环删除数组中的元素相关推荐

  1. Java中使用for循环删除数组中某个元素,并按原有顺序打印

    package com.ty.demo; //使用for循环删除数组中的某个元素,并按照原有顺序打印出来 public class Demo03 { public static void main(S ...

  2. Javascript循环删除数组中元素的3种方法

    本文主要跟大家分享了关于Javascript循环删除数组中元素的几种方法,分享出来供大家参考学习,下面与微点阅读小编一起来看看详细的介绍: 问题 大家在码代码的过程中,经常会遇到在循环中移除指定元素的 ...

  3. c\c++语言删除数组中重复元素

    c\c++语言删除数组中重复元素 如题:num[]={1,2,3,3,4,5,6} 输出为:123456 下为原代码: #include "stdafx.h" #include & ...

  4. JavaScript中如何删除数组中指定元素

    js中删除数组中指定元素大致有以下三中方法. 1.使用for循环遍历,根据条件判断. for (let i = 0; i < array.length; i++) {if (array[i] = ...

  5. JS 删除数组中某个元素的几种方式

    目录 第一种:删除最后一个元素 pop 删除 slice 删除 splice 删除 for 删除 length 删除 第二种: 删除第一个元素 shift 删除 slice 删除 splice 删除 ...

  6. js删除数组中指定元素

    js删除数组中某一项或几项的几种方法 一.删除第一个元素 1.shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值. 注意: 此方法改变数组的长度! 提示: 移除数组末尾的元素可 ...

  7. JavaScript删除数组中某个元素的几种方式

    文章目录 第一种:删除最后一个元素 pop 删除 slice 删除 splice 删除 for 删除 length 删除 第二种: 删除第一个元素 shift 删除 slice 删除 splice 删 ...

  8. html数组删除指定元素,js怎么删除数组中指定元素?

    js中删除数组中指定元素的方法:首先通过循环遍历该数组得到指定元素的索引值,然后根据索引值使用splice()方法即可删除元素,语法"array.splice(索引值,1)". J ...

  9. java删除数组中重复元素的方法

    java删除数组中重复元素的方法 方法一:for双循环 方法二:利用HashMap,储存元素 方法一:for双循环 1.声明int类型index,该数即可为不重复元素下标,还可统计数组中不重复元素的个 ...

最新文章

  1. iOS中KVO模式的解析与应用
  2. 200 ssl服务器证书无效_服务器证书无效网站显示异常怎么办?
  3. linux文件系统pdf_一篇文章理解Ext4文件系统的目录
  4. 笔记-信息化与系统集成技术-信息资源管理
  5. 黄聪:CodeSmith和PowerDesigner的使用安装和数据库创建(原创系列教程)
  6. 【51单片机快速入门指南】6.1:LCD1602的八线、四线控制及自定义符号,完美兼容Proteus仿真
  7. 35款让你爱不释手的网页元素PSD素材
  8. 截至11日14时37分,“11.11京东全球好物节”累计下单金额突破1794亿元
  9. oracle定位数据库读写高,oracle数据库CPU过高问题定位、分析(三)
  10. centos 使用yum 安装出现 File contains no section headers 错误解决方法
  11. frdora10_a8_linux,硬盘安装fedora10
  12. 原创engine中地块的自动编号函数
  13. oracle上机题库_Oracle OCP认证考试IZ0-053题库共712题数据库(带中文解析)
  14. 树莓派开发笔记(八):GPIO口的I2C使用(BME280三合一传感器:温度、湿度、气压测量)
  15. 中国机床行业投资现状与十四五发展战略决策报告2022版
  16. EXCEL数据组合的用法
  17. 一文了解大厂的DDD领域驱动设计
  18. PP实施经验分享(24)——ECN应用及系统操作
  19. 使用命令行清理Mac 释放磁盘空间
  20. android手机号码恢复,安卓手机通讯录怎么恢复?教你恢复小妙招

热门文章

  1. Linux ubuntu MySQL 定时备份/手动备份/还原 测试教程
  2. 体外诊断(IVD)高速发展
  3. 如何清除Exchange2010邮件日志
  4. SwiftUI 教程系列-第三章
  5. ASUS华硕笔记本电脑天选2-FX506HCB11400原装出厂Windows10系统原厂OEM系统
  6. 微信支付不使用服务器端,微信支付之app支付服务器端
  7. 【小白向】手把手教你发布自己写的HTML静态网页
  8. Lombok_刘锋的博客
  9. Windows 安装和配置 WSL(亲测)
  10. 构建全真互联数字地图底座 腾讯地图产业版WeMap重磅升级