Skip to content

从JavaScript数组中删除元素

在JavaScript中,从数组中删除特定值或值是一项相当常见的任务。虽然实现起来并不难,但有几种可用的方法,每种方法都有其优缺点。选择正确的方法最终取决于使用情况。

Array.prototype.splice()

这可能是从数组中删除元素最常见的方法。虽然Array.prototype.splice()是一个非常多功能的工具,但你需要记住它会改变原始数组。除此之外,它返回的是被删除的元素,而不是一个新数组。

const arr = ['a', 'b', 'c'];
const deleted = arr.splice(1, 1); // ['b']

console.log(arr); // ['a', 'c']

如果你可以接受改变数组的方式,Array.prototype.splice()可能就是你需要的解决方案。

Array.prototype.filter()

从数组中删除元素的另一个选项是Array.prototype.filter()。比Array.prototype.splice()更灵活,它不会改变原始数组,而是返回一个新数组。然而,对于较大的数组,当要删除的元素只出现一次时,需要考虑性能问题。Array.prototype.filter()总是会遍历数组中的所有元素,这在某些情况下可能是不实际的。

const arr = ['a', 'b', 'c'];
const filtered = arr.filter(el => el !== 'b'); // ['a', 'c']

console.log(arr); // ['a', 'b', 'c']

大多数情况下,Array.prototype.filter() 是从数组中删除元素的最佳选择。

其他选项

前面的两个选项应该涵盖了绝大多数使用情况。然而,在某些情况下,还有一些其他选项可供选择。例如,如果你喜欢 Array.prototype.splice() 的接口但需要不可变性,这个数组元素删除代码片段 可能适合你。同样,当处理大型未排序数组时,可能会对快速删除技巧 感兴趣。