目录
How to Remove Element(s) from an Array in JavaScript
- 从 JavaScript 中的数组中删除元素
- 从 JavaScript 中的数组中删除最后一个元素
- 从 JavaScript 中的数组中删除第一个元素
- 在 JavaScript 中过滤掉数组中的元素
- 从数组中过滤掉特定索引处的元素
- 切勿对数组使用删除运算符
在 JavaScript 中从数组中删除元素
使用该splice()
方法从数组中删除一个或多个元素。
该splice
方法通过删除、替换或添加新元素来更改原始数组的内容,并返回包含已删除元素的数组。
const arr = ['a', 'b', 'c']; const index = arr.indexOf('b'); console.log(index); // 👉️ 1 if (index !== -1) { const removed = arr.splice(index, 1); console.log(removed); // 👉️ ['b'] } console.log(arr); // 👉️ ['a', 'c']
我们传递给
Array.splice
方法的参数是:
- 起始索引– 开始更改数组的索引
- 删除计数——我们要从数组中删除多少个元素,从起始索引开始
我们明确检查该indexOf
方法是否未返回-1
,因为如果传入的值不包含在数组中,该indexOf
方法将返回-1
。
这是相同的示例,但使用命名变量使内容更具可读性。
const arr = ['a', 'b', 'c']; const startIndex = arr.indexOf('b'); const deleteCount = 1; if (startIndex !== -1) { const removed = arr.splice(startIndex, deleteCount); console.log(removed); // 👉️ ['b'] } console.log(arr); // 👉️ ['a', 'c']
该splice
方法更改原始数组的内容并返回包含已删除元素的数组。
如果需要清空数组的内容,将起始索引0
作为参数传递给该splice
方法。
它将从原始数组中删除所有元素并返回一个包含删除元素的新数组。
const arr = ['a', 'b', 'c']; const removedElements = arr.splice(0); console.log(removedElements); // 👉️ ['a', 'b', 'c'] console.log(arr); // 👉️ []
如果未提供删除计数参数,则从起始索引splice
开始删除所有元素。
从 JavaScript 中的数组中删除最后一个元素
使用该pop()
方法从数组中删除最后一个元素。
该方法从数组中删除并返回最后一个元素并更改数组的长度。如果在空数组上调用,则该pop
方法返回
undefined
。
const arr = ['a', 'b', 'c']; const removed = arr.pop(); console.log(removed); // 👉️ 'c' console.log(arr); // ['a', 'b']
Array.pop方法不接受任何参数,
从数组中删除并返回最后一个元素。
从 JavaScript 中的数组中删除第一个元素
使用该shift()
方法从数组中删除第一个元素。
该方法从数组中删除并返回第一个元素并更改数组的长度。当在空数组上调用时,该shift
方法返回
undefined
。
const arr = ['a', 'b', 'c']; const removed = arr.shift(); console.log(removed); // 👉️ 'a' console.log(arr); // ['b', 'c']
Array.shift方法与
非常相似Array.pop
,但是,它适用于数组的第一个元素。
在 JavaScript 中过滤掉数组中的元素
使用filter()
方法过滤数组的元素。
该方法创建并返回一个新数组,该数组仅包含满足回调函数实现的条件的元素。
const arr = ['a', 'b', 'c']; const filteredArr = arr.filter(element => { return element !== 'b'; }) console.log(filteredArr) // 👉️ ['a', 'c'] console.log(arr) // 👉️ ['a', 'b', 'c']
我们传递给
Array.filter
方法的函数会针对数组中的每个元素进行调用。
如果函数返回真值,则数组元素将添加到返回的数组中。
该filter
方法不会更改原始数组的内容,而是返回一个新数组。
当您只需要数组中满足特定条件的元素时,filter 方法很有用,例如,仅从包含奇数和偶数的数组中获取奇数。
从数组中过滤掉特定索引处的元素
使用该slice()
方法从数组中过滤掉特定索引处的元素。
该方法不会更改原始数组,而是返回其中一部分的浅表副本。
const arr = ['a', 'b', 'c']; const newArr = arr.slice(0, 2); console.log(newArr); // 👉️ ['a', 'b'] console.log(arr); // 👉️ ['a', 'b', 'c']
我们将以下参数传递给
Array.slice
方法:
- start index – 开始提取项目的索引
- end index – 提取到但不包括该索引
该slice
方法不会更改原始数组,与splice
.
slice
方法很有用。切勿对数组使用删除运算符#
delete
运算符用于从对象中删除属性,但是,您可能会看到人们将它与数组一起使用。
const arr = ['a', 'b', 'c']; delete arr[1]; console.log(arr); // ['a', , 'c'] console.log(arr.length); // 👉️ 3
delete 运算符
删除数组元素,但是,它不会更新数组的长度。
3
没有充分的理由在数组上使用删除运算符。如果我们想将元素的值更新为 beundefined
或 null 我们可以直接这样做:
const arr = ['a', 'b', 'c']; arr[1] = undefined; arr[2] = null; console.log(arr); // ['a', undefined, null] console.log(arr.length); // 👉️ 3
如果您看到数组上使用了 delete 运算符,那么他们实际上是想使用该
splice
方法。