splice删除数组中的指定的某些元素

本文探讨了在JavaScript中使用splice方法从数组中删除特定元素的正确方式。通过实例展示了为何直接遍历并删除会导致问题,并提供了一种避免这些问题的有效策略。

splice删除我们常见的是如下,我们要删除addr数组中,包含属性a为空的元素

for(let i=0;i<==arrd.length-1;i++){
	if(addr[i].a==''){
		addr.splice(i, 1)
	}
}

但是这样是不能删除数组中所有a属性为空的数组的,因为splice会改变原数组,会导致i的变化,所以我们可以使i一直等于数组的长度-1

for(let i<=arrd.length-1;i>=0;i--){
	if(addr[i].a==''){
		addr.splice(i, 1)
	}
}

 

### ES5 中 `splice` 方法删除数组元素的用法与示例 在 ES5 中,`splice` 方法是用于修改数组内容的一个强大工具。它可以删除、替换或添加数组中的元素,并且会直接改变原数组[^3]。 #### 基本语法 ```javascript arr.splice(start, deleteCount[, item1[, item2[, ...]]]) ``` - `start`:指定修改的起始位置索引。 - `deleteCount`:要删除元素数量。如果设置为 0,则不会删除任何元素。 - `item1, item2, ...`:可选参数,表示从 `start` 位置开始插入的元素。 #### 删除数组元素的具体用法 当仅需删除数组中的某些元素时,可以将 `splice` 方法的 `deleteCount` 参数设置为需要删除元素数量,而不提供额外的插入项。 ##### 示例 1:删除单个元素 以下代码展示了如何使用 `splice` 方法删除数组指定索引处的单个元素: ```javascript let array = [1, 2, 3, 4, 5]; let indexToDelete = 2; let numberOfElementsToDelete = 1; array.splice(indexToDelete, numberOfElementsToDelete); console.log(array); // 输出: [1, 2, 4, 5] ``` 在这个例子中,`splice` 方法从索引 `2` 开始删除了 `1` 个元素,最终数组变为 `[1, 2, 4, 5]`[^1]。 ##### 示例 2:删除多个元素 若需要删除多个连续的元素,只需调整 `deleteCount` 的值即可: ```javascript let array = [1, 2, 3, 4, 5]; let indexToDelete = 1; let numberOfElementsToDelete = 3; array.splice(indexToDelete, numberOfElementsToDelete); console.log(array); // 输出: [1, 5] ``` 此代码片段中,从索引 `1` 开始删除了 `3` 个元素,结果数组变为 `[1, 5]`[^3]。 #### 注意事项 1. **原数组被修改**:`splice` 方法会直接改变调用它的数组。 2. **返回值**:该方法返回一个包含被删除元素的新数组。如果没有删除任何元素,则返回一个空数组[^4]。 ##### 示例 3:获取被删除元素 以下代码展示了如何捕获并打印被删除元素: ```javascript let array = [1, 2, 3, 4, 5]; let removedElements = array.splice(1, 3); console.log(removedElements); // 输出: [2, 3, 4] console.log(array); // 输出: [1, 5] ``` #### 循环中删除元素的注意事项 在遍历数组时,如果需要根据条件删除元素,需要注意索引的变化。可以通过从后向前遍历数组来避免索引错乱问题。 ##### 示例 4:安全地删除符合条件的元素 以下代码展示了如何在循环中安全地删除满足特定条件的元素: ```javascript let array = [{ id: 1, sex: 1 }, { id: 2, sex: 0 }, { id: 3, sex: 1 }]; for (let i = array.length - 1; i >= 0; i--) { if (array[i].sex === 1) { array.splice(i, 1); } } console.log(array); // 输出: [{ id: 2, sex: 0 }] ``` 在这个例子中,通过从数组末尾向前遍历,确保删除操作不会影响尚未处理的元素索引[^5]。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LLL_LH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值