在JavaScript开发中,数组是最常用的数据结构之一,移除数组中的某个元素是日常开发中非常常见的操作。根据是否需要修改原数组、移除的是单个元素还是多个符合条件的元素,我们可以选择不同的方法来实现。

修改原数组的移除方法
splice方法
splice是数组自带的方法,可以直接修改原数组,通过指定起始索引和删除数量来移除元素,还可以同时插入新元素。它的语法是array.splice(start[, deleteCount[, item1[, item2[, ...]]]]),其中start是起始索引,deleteCount是要删除的元素个数,后面的参数是可选的要插入的新元素。
如果要移除数组中指定索引位置的元素,可以使用如下代码:
// 定义测试数组 let arr = [1, 2, 3, 4, 5]; // 移除索引为2的元素,也就是值3 let removed = arr.splice(2, 1); console.log(arr); // 输出 [1, 2, 4, 5] console.log(removed); // 输出 [3],返回被移除的元素组成的数组
如果要移除数组中某个具体值的元素,需要先找到该值的索引,再用splice移除:
let arr = [1, 2, 3, 4, 5];
// 找到值3的索引
let index = arr.indexOf(3);
if (index !== -1) {
// 索引存在才移除,避免报错
arr.splice(index, 1);
}
console.log(arr); // 输出 [1, 2, 4, 5]pop和shift方法
这两个方法只能移除数组的首尾元素,pop移除最后一个元素,shift移除第一个元素,都会修改原数组并返回被移除的元素。
let arr = [1, 2, 3, 4, 5]; // 移除最后一个元素 let last = arr.pop(); console.log(arr); // 输出 [1, 2, 3, 4] console.log(last); // 输出 5 // 移除第一个元素 let first = arr.shift(); console.log(arr); // 输出 [2, 3, 4] console.log(first); // 输出 1
返回新数组的移除方法
filter方法
filter方法不会修改原数组,而是返回一个满足条件的新数组,我们可以通过过滤掉要移除的元素来实现移除效果,适合需要保留原数组的场景。
移除指定值的元素:
let arr = [1, 2, 3, 4, 5]; // 移除值为3的元素,返回新数组 let newArr = arr.filter(item => item !== 3); console.log(newArr); // 输出 [1, 2, 4, 5] console.log(arr); // 原数组不变,输出 [1, 2, 3, 4, 5]
如果要移除多个符合条件的元素,filter也非常方便,比如移除所有偶数:
let arr = [1, 2, 3, 4, 5, 6]; // 移除所有偶数 let newArr = arr.filter(item => item % 2 !== 0); console.log(newArr); // 输出 [1, 3, 5]
slice方法组合使用
如果知道要移除元素的索引,也可以通过slice方法组合生成新数组,同样不会修改原数组。
let arr = [1, 2, 3, 4, 5]; // 要移除索引为2的元素 let index = 2; // 拼接索引前和索引后的部分 let newArr = arr.slice(0, index).concat(arr.slice(index + 1)); console.log(newArr); // 输出 [1, 2, 4, 5] console.log(arr); // 原数组不变
不同方法的适用场景
我们可以通过下面的表格快速对比不同方法的特点,选择适合自己场景的方法:
| 方法名 | 是否修改原数组 | 适用场景 |
|---|---|---|
| splice | 是 | 需要修改原数组,移除指定索引的单个或多个元素 |
| pop/shift | 是 | 只需要移除数组首尾元素 |
| filter | 否 | 需要保留原数组,移除符合条件的多个元素 |
| slice组合 | 否 | 需要保留原数组,移除指定索引的单个元素 |
注意事项
- 使用splice方法前,最好先判断要移除的索引是否存在,避免索引超出范围导致的问题。
- indexOf方法只能找到第一个匹配元素的索引,如果数组中有多个相同值的元素,需要移除所有的话,用filter更合适。
- 如果不需要修改原数组,优先选择filter或者slice组合的方法,避免副作用影响其他依赖原数组的逻辑。
JavaScript数组操作元素移除splice方法filter方法修改时间:2026-06-05 02:03:03