增删改查是我们日常开发中的最基本任务,在JavaScript中我们经常需要从数据组删除特定的数据项。然而,JavaScript数组中并没有提供删除特定数据项的方法。所以我们必须使用替代的方法,来从javaScript中删除特定数据项。

1:使用 filter()

使用现代 Javascript 删除特定数组项的最简单方法是使用过滤器。让我们看一个简单的例子:

let myArr = [ "🍎", "🍏", "🍐", "🍍" ];
let removedArr = myArr.filter((x) => x !== "🍍");
console.log(removedArr);

当我们的数组中的每一个数据想都是唯一的时候,他是正常工作的,但是当我们的存在重复项的时候,此时如果你只想删除一个,保留其他重复的,这种方式是无法做到的。

let myArr = [ "🍎", "🍏", "🍏", "🍍" ];
let removedArr = myArr.filter((x) => x !== "🍏");
console.log(removedArr);

由于我们有两个青苹果,并且新数组过滤掉了所有青苹果,因此我们在使用此方法时实际上删除了两个项目。如果我们只想删除一个元素,我们必须使用另一种方法。

2:使用 indexOf() 和 splice()

indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。如果没有找到匹配的字符串则返回 -1。
splice() 方法用于添加或删除数组中的元素。注意:这种方法会改变原始数组。
这种方式与上面的区别在于:

  1. 首先,它改变了原始数组——所以我们不在这里复制。原始数组将被改变。
  2. 其次,它使用两个函数——首先我们获取indexOf要删除的数组项,然后我们splice获取数组以删除单个项。

这是一个例子:

let myArr = [ "🍎", "🍏", "🍏", "🍍" ];
let getLocation = myArr.indexOf("🍏");
myArr.splice(getLocation, 1);
// myArr now becomes [ "🍎", "🍏",  "🍍" ];
console.log(myArr);

结论

尽管在 Javascript 中没有直接从数组中删除项目的方法,但我们确实有两个工具可以为我们提供足够的灵活性来涵盖几乎所有有关删除数组项目的场景。