在 JavaScript 中,数组是最常用的数据结构之一,数组元素的删除是开发过程中非常常见的操作。你可能会遇到需要删除数组中某些元素的情况,而 JavaScript 提供了多种方法来完成这一任务。本文将介绍 5 种常用的删除数组元素的方法,并详细讲解每种方法的使用和性能特点。
1. 使用 splice()
方法
介绍
splice()
方法可以从数组中添加或删除元素,它会修改原数组,直接改变数组的内容。该方法可以指定删除的元素位置和删除的元素数量。
语法
array.splice(start, deleteCount);
start
: 删除的起始索引位置。deleteCount
: 要删除的元素数量。
示例代码
let arr = [1, 2, 3, 4, 5];
console.log("原始数组:", arr);
// 删除索引位置为 2 的元素
arr.splice(2, 1); // 删除一个元素,从索引 2 开始
console.log("删除元素后的数组:", arr);
// 删除多个元素,从索引 1 开始删除 3 个元素
arr.splice(1, 3);
console.log("删除多个元素后的数组:", arr);
输出结果
原始数组: [1, 2, 3, 4, 5]
删除元素后的数组: [1, 2, 4, 5]
删除多个元素后的数组: [1]
解释
splice()
方法的最大优点是它可以在指定位置删除任意数量的元素,而且会修改原数组。如果不需要删除元素,只是需要添加元素,splice()
也同样适用。
2. 使用 filter()
方法
介绍
filter()
方法创建一个新数组,新数组包含通过指定函数测试的所有元素。这个方法不会修改原数组,而是返回一个新数组。你可以通过给 filter()
传递一个回调函数来删除不需要的元素。
语法
array.filter(callback(element, index, array));
callback
: 测试每个元素的函数,返回true
保留该元素,返回false
则删除该元素。
示例代码
let arr = [1, 2, 3, 4, 5];
console.log("原始数组:", arr);
// 删除所有大于 3 的元素
let newArr = arr.filter(item => item <= 3);
console.log("过滤后的数组:", newArr);
输出结果
原始数组: [1, 2, 3, 4, 5]
过滤后的数组: [1, 2, 3]
解释
filter()
方法的最大优势是它不会修改原数组,它会返回一个新的数组,包含通过测试的元素。如果需要删除符合某种条件的多个元素,可以使用该方法。
3. 使用 pop()
方法
介绍
pop()
方法用于删除数组的最后一个元素,并返回该元素。该方法修改原数组,不接受任何参数。
语法
array.pop();
示例代码
let arr = [1, 2, 3, 4, 5];
console.log("原始数组:", arr);
// 删除数组最后一个元素
let removedElement = arr.pop();
console.log("删除的元素:", removedElement);
console.log("删除后的数组:", arr);
输出结果
原始数组: [1, 2, 3, 4, 5]
删除的元素: 5
删除后的数组: [1, 2, 3, 4]
解释
pop()
只能删除数组中的最后一个元素,并返回被删除的元素。如果数组为空,调用 pop()
会返回 undefined
。
4. 使用 shift()
方法
介绍
shift()
方法用于删除数组的第一个元素,并返回该元素。该方法修改原数组,不接受任何参数。
语法
array.shift();
示例代码
let arr = [1, 2, 3, 4, 5];
console.log("原始数组:", arr);
// 删除数组第一个元素
let removedElement = arr.shift();
console.log("删除的元素:", removedElement);
console.log("删除后的数组:", arr);
输出结果
原始数组: [1, 2, 3, 4, 5]
删除的元素: 1
删除后的数组: [2, 3, 4, 5]
解释
shift()
方法只能删除数组的第一个元素,并返回被删除的元素。如果数组为空,调用 shift()
会返回 undefined
。
5. 使用 delete
操作符
介绍
delete
操作符可以删除数组的某个元素,但它不会改变数组的长度,只会将该元素的值设置为 undefined
。
语法
delete array[index];
示例代码
let arr = [1, 2, 3, 4, 5];
console.log("原始数组:", arr);
// 删除索引为 2 的元素
delete arr[2];
console.log("删除后的数组:", arr);
输出结果
原始数组: [1, 2, 3, 4, 5]
删除后的数组: [1, 2, undefined, 4, 5]
解释
delete
操作符删除数组元素时并不会修改数组的长度,而是将该位置的元素值变为 undefined
。如果需要移除某个元素并调整数组长度,应该使用 splice()
方法。

总结
在 JavaScript 中删除数组元素有很多种方法,每种方法都有其特点和适用场景:
splice()
:可以删除数组中的任意位置元素,并且可以删除多个元素,直接修改原数组。filter()
:返回一个新的数组,删除不满足条件的元素,原数组不变。pop()
:删除数组最后一个元素。shift()
:删除数组第一个元素。delete
:删除指定索引的元素,但数组的长度不会发生变化,元素值变为undefined
。
选择合适的删除方法可以根据具体的需求,例如,是否需要修改原数组,是否需要返回新数组,是否要删除指定位置的元素等等。