如何避免在JS数组中使用splice删除元素时遇到陷阱?

2026-06-10 13:430阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计662个文字,预计阅读时间需要3分钟。

如何避免在JS数组中使用splice删除元素时遇到陷阱?

首先,了解几个概念:

- `splice()`:返回从原数组中删除的项(如果没有删除任何项,则返回一个空数组)。当指定两个参数时,表示删除的项数。当指定三个参数时,且第二个参数为0时,表示插入项。当指定三个参数时,第二个参数为0以外的值时,表示插入项的起始位置。

下面是简化后的内容:

splice():从数组中删除项(无删除则返回空数组)。- 两个参数:删除指定数量的项。- 三个参数:0表示插入,其他表示插入位置。

先来看下几个概念:

// splice:返回从原始数组中删除的项(如果没有任何删除,则返回空数组) // 当指定2个参数时,表示删除 // 当指定3个参数,且第2个参数为0时表示插入 // 当指定3个参数,且第2个参数为1时表示替换

本次就拿删除举例,本身我们想删除数组中的某个指定元素,我们需要知道它所在数组中的下标,我们可以用 数组.indexOf获取它所在的下标,然后拿splice删除这个元素。

本身是没问题

代码如下:

var arr = ["张三","李四","王五","赵六"]; // 删除王五 arr.splice(arr.indexOf("王五"),1);

但是。。。。。问题就来了。

如果放到for循环中,比如循环数组,当某个条件成立的时候,我们需要删除某个指定的元素。

但是循环中,i每次都是+1的,但是我们删除某个元素后,下标就变了,相应的位置发生变化,i的值加一后,就会跳过下一个元素。

坑啊。。。

阅读全文

本文共计662个文字,预计阅读时间需要3分钟。

如何避免在JS数组中使用splice删除元素时遇到陷阱?

首先,了解几个概念:

- `splice()`:返回从原数组中删除的项(如果没有删除任何项,则返回一个空数组)。当指定两个参数时,表示删除的项数。当指定三个参数时,且第二个参数为0时,表示插入项。当指定三个参数时,第二个参数为0以外的值时,表示插入项的起始位置。

下面是简化后的内容:

splice():从数组中删除项(无删除则返回空数组)。- 两个参数:删除指定数量的项。- 三个参数:0表示插入,其他表示插入位置。

先来看下几个概念:

// splice:返回从原始数组中删除的项(如果没有任何删除,则返回空数组) // 当指定2个参数时,表示删除 // 当指定3个参数,且第2个参数为0时表示插入 // 当指定3个参数,且第2个参数为1时表示替换

本次就拿删除举例,本身我们想删除数组中的某个指定元素,我们需要知道它所在数组中的下标,我们可以用 数组.indexOf获取它所在的下标,然后拿splice删除这个元素。

本身是没问题

代码如下:

var arr = ["张三","李四","王五","赵六"]; // 删除王五 arr.splice(arr.indexOf("王五"),1);

但是。。。。。问题就来了。

如果放到for循环中,比如循环数组,当某个条件成立的时候,我们需要删除某个指定的元素。

但是循环中,i每次都是+1的,但是我们删除某个元素后,下标就变了,相应的位置发生变化,i的值加一后,就会跳过下一个元素。

坑啊。。。

阅读全文