一尘不染

如何从数组中删除特定项目?

javascript

我有一个数字数组,我正在使用该.push()方法向其中添加元素。

有没有一种简单的方法可以从数组中删除特定元素?

我正在寻找类似的东西:

array.remove(number);

我必须使用核心JavaScript。不允许使用框架。


阅读 264

收藏
2021-12-30

共1个答案

一尘不染

使用 查找index要删除的数组元素的indexOf,然后使用 删除该索引splice

splice() 方法通过删除现有元素和/或添加新元素来更改数组的内容。

const array = [2, 5, 9];

console.log(array);

const index = array.indexOf(5);
if (index > -1) {
  array.splice(index, 1);
}

// array = [2, 9]
console.log(array); 

的第二个参数splice是要删除的元素数。请注意,splice就地修改数组并返回一个包含已删除元素的新数组。


为了完整起见,这里是函数。第一个函数只删除一个匹配项(即删除5from的第一个匹配项[2,5,9,1,5,8,5]),而第二个函数删除所有匹配项:

function removeItemOnce(arr, value) {
  var index = arr.indexOf(value);
  if (index > -1) {
    arr.splice(index, 1);
  }
  return arr;
}

function removeItemAll(arr, value) {
  var i = 0;
  while (i < arr.length) {
    if (arr[i] === value) {
      arr.splice(i, 1);
    } else {
      ++i;
    }
  }
  return arr;
}
// Usage
console.log(removeItemOnce([2,5,9,1,5,8,5], 5))
console.log(removeItemAll([2,5,9,1,5,8,5], 5))

在 TypeScript 中,这些函数可以通过类型参数保持类型安全:

function removeItem<T>(arr: Array<T>, value: T): Array<T> { 
  const index = arr.indexOf(value);
  if (index > -1) {
    arr.splice(index, 1);
  }
  return arr;
}
2021-12-30