解决数组塌陷问题的两种方法

2023-11-05

数组塌陷:操作数组的时候会使数组的索引发生变化,造成数组中的某项被跳过。
例如:删除数组中的每一项
.for (var i = 0; i < arr.length; i++) { arr.splice(i, 1) }

1 . 每次执行i–

for (var i = 0; i < arr.length; i++) {
      arr.splice(i, 1)
      i--
    }
/*
  i = 0 进入循环  把数组第 0 项干掉  arr = [2, 3, 4]  length = 3  i = -1
  i = 0 进入循环  把数组第 0 项干掉  arr = [3, 4]  length = 2  i = -1
  i = 0 进入循环  把数组第 0 项干掉  arr = [4]  length = 1  i = -1
  i = 0 进入循环  把数组第 0 项干掉  arr = []  length = 0  i = -1
  i = 0 不进入循环
*/`

2.从后往前遍历

  for (var i = arr.length - 1; i >= 0; i--) {
  arr.splice(i, 1)
}
/*
  i = 3  进入循环  把数组的第 3 项干掉  arr = [1, 2, 3]  length = 3
  i = 2  进入循环  把数组的第 2 项干掉  arr = [1, 2]  length = 2
  i = 1  进入循环  把数组的第 1 项干掉  arr = [1]  length = 1
  i = 0  进入循环  把数组的第 0 项干掉  arr = []  length = 0
  i = -1 不进入循环
*/

 

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

解决数组塌陷问题的两种方法 的相关文章

随机推荐

  • ssh普通用户(非root用户)的密钥登录

    原文地址 ssh原理 ssh普通用户 非root用户 的密钥登录 这里以用户名 zhangsan 为例 由于个人习惯问题 我把用户zhangsan的默认目录改了 在使用密钥登录的过程中 始终提示要输入用户密码 而 var log secur
  • 群晖硬盘已损毁 Linux 修复,群晖NAS提示空间损毁修复纪实

    注 以下操作有丢失数据的风险 请慎重考虑按本文提示操作 前几天 家里的服务器RAID卡告警 提示阵列掉盘 后花了一天时间进行重新挂盘并重建数据 不是重建阵列哈 开机 OK ESXI一切正常 运行各种系统没有问题 当打开NAS时 提示报错 重
  • stm32单片机基础(一)

    stm32单片机 串口复用 IO口功能如何查看 GPIO配置选择 GPIO 如何确定外设的时钟是APB1还是APB2 概念 时钟周期 机器周期 双工 半双工 单工含义区别 串口复用 一定要记得使能复用时钟 AFIO 端口IO功能复用时钟 某
  • 线程共享和私有的数据

    引用 windows程序员面试指南 堆上的数据是线程共享的 栈上的数据是线程私有的 1 堆上共享的数据 a 进程 代码段 b 进程 数据段 c 进程打开的文件描述符 d 信号的处理器 e 进程的当前目录和 f 进程用户 ID 与进程组 ID
  • 全网最牛,接口自动化-Linux系统安装Jenkins+Ant详细步骤

    目录 导读 前言 一 Python编程入门到精通 二 接口自动化项目实战 三 Web自动化项目实战 四 App自动化项目实战 五 一线大厂简历 六 测试开发DevOps体系 七 常用自动化测试工具 八 JMeter性能测试 九 总结 尾部小
  • vld(Visual Leak Detector)下载地址和源码地址

    安装包下载页面 https kinddragon github io vld eg https github com KindDragon vld releases download v2 5 1 vld 2 5 1 setup exe 源
  • kafka存储原理介绍

    几个基本概念 Topic 消息主题 每一条消息都必须要指定主题 kafka集群可以同时进行多个topic的分发 Broker 消息处理的节点 可以立即为每个broker是一个单独的kafka进程 一般部署在不同的机器上 多个broker共同
  • js 计算月份差 ,天数差

  • Linux 安装 RocketMQ(Server)

    安装 linux版 官网下载地址 解压上传至 usr local 进入上传文件目录 cd usr local rocketmq all 4 7 0 source release bin 修改runbroker sh 修改runserver
  • chatgpt赋能python:如何通过Python赚钱

    如何通过Python赚钱 介绍 Python是一种高级编程语言 广泛用于Web开发 数据分析 机器学习等领域 Python具有简单易学 功能强大 易于维护等特点 因此非常受欢迎 而且 Python开源免费 可以在各个平台上运行 不需要花费太
  • Java设计模式-里氏替换原则

    里氏替换原则 Liskov Substitution Principle 定义1 如果对每一个类型为 T1的对象 o1 都有类型为 T2 的对象o2 使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时 程序 P 的行为没
  • 虚拟机ubantu连接物理机外部代理

    1 关闭windows防火墙 2 手动设置虚拟机代理 首先代理的允许局域网连接要打开 并且端口信息是根据v2rayN左下角的端口信息填写的 注意本地监听端口和局域网监听端口不一样
  • 【MATLAB第73期】# 源码分享

    MATLAB第73期 源码分享 基于MATLAB的不同类型数据排列方式合集 学习参考链接 1 对数组的行进行排序 单元格 字符串 类别 表 2 按字符代码对文本进行排序 3 对文件名 文件夹名或文件路径进行排序 4 对字符串 单元格 分类数
  • 原理图和PCB设计--EMC审查项(具体实施需结合公司实际项目做合理变更)

    原理图EMC设计检查要点 PCB EMC设计检查要点
  • python q-q图 和PP图

    转载于https www cnblogs com king lps p 7840268 html以供学习 侵权即删 一 QQ图 分位数图示法 Quantile Quantile Plot 简称 Q Q 图 统计学里Q Q图 Q代表分位数 是
  • qmake中文官方文档

    qmake QMake提供了一个用于管理应用程序 库 其他组件的构建过程的面向工程系统 QMake扩展了每个工程文件的信息 生成一个执行编译和连接过程的Makefile 本文翻译自Qt 4 8官方文档 一 QMake使用 QMake提供了一
  • vue导出excel

    1 下载依赖包 npm install S file saver xlsx npm install D Script loader 2 下载两个文件Blob js和 Export2Excel js 在src下创建vendor文件夹 将两个j
  • MVC简介

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 MVC简介 MVC架构最早是smalltalk语言研究团提出的 应用于用户交互应用程序中 smalltalk语言和java语言有很多相似性 都是面向对象语言 很自然的SUN在
  • QT的oracle驱动QOCI连接数据库产生QOCI driver not loaded和Unable to logon的问题解决

    相比mysql oracle的驱动真是一言难尽 都是商用的 mysql的驱动编译起来又快又稳 oci真的是让人捉鸡 无奈客户一开始起步用的都是国外买的成套系统 搭配oracle数据库 数据量大不可能进行迁移 所以只能硬着头皮上了 先记一波流
  • 解决数组塌陷问题的两种方法

    数组塌陷 操作数组的时候会使数组的索引发生变化 造成数组中的某项被跳过 例如 删除数组中的每一项 for var i 0 i lt arr length i arr splice i 1 1 每次执行i for var i 0 i lt a