如何按值从数组中删除项目?

2022-08-29 22:04:35

有没有一种方法可以从JavaScript数组中删除一个项目?

给定一个数组:

var ary = ['three', 'seven', 'eleven'];

我想做这样的事情:

removeItem('seven', ary);

我已经研究过,但这只能通过位置编号删除,而我需要一些东西来按其值删除项目。splice()


答案 1

您可以使用 indexOf 方法,如下所示:

var index = array.indexOf(item);
if (index !== -1) {
  array.splice(index, 1);
}

注意您需要在 IE8 及更低版本中填充它

var array = [1,2,3,4]
var item = 3

var index = array.indexOf(item);
array.splice(index, 1);

console.log(array)

答案 2

一句话就可以了,

var arr = ['three', 'seven', 'eleven'];

// Remove item 'seven' from array
var filteredArray = arr.filter(function(e) { return e !== 'seven' })
//=> ["three", "eleven"]

// In ECMA6 (arrow function syntax):
var filteredArray = arr.filter(e => e !== 'seven')

这利用了JS中的过滤器函数。它在 IE9 及更高版本中受支持。

它的作用(来自文档链接)

filter() 为数组中的每个元素调用一次提供的回调函数,并构造一个包含所有值的新数组,回调返回强制为 true 的值。仅对具有赋值的数组索引调用回调;不会对已删除或从未分配值的索引调用它。未通过回调测试的数组元素将被简单地跳过,并且不会包含在新数组中。

因此,基本上,这与所有其他解决方案相同,只是从IE6开始支持for in construct。for (var key in ary) { ... }

基本上,过滤器是一种方便的方法,与构造(AFAIK)相比,它看起来更好(并且是可链接的)。for in