从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()
的接口但需要不可变性,这个数组元素删除代码片段 可能适合你。同样,当处理大型未排序数组时,可能会对快速删除技巧 感兴趣。