如何按值从数组中删除项目?
2022-08-29 22:04:35
有没有一种方法可以从JavaScript数组中删除一个项目?
给定一个数组:
var ary = ['three', 'seven', 'eleven'];
我想做这样的事情:
removeItem('seven', ary);
我已经研究过,但这只能通过位置编号删除,而我需要一些东西来按其值删除项目。splice()
有没有一种方法可以从JavaScript数组中删除一个项目?
给定一个数组:
var ary = ['three', 'seven', 'eleven'];
我想做这样的事情:
removeItem('seven', ary);
我已经研究过,但这只能通过位置编号删除,而我需要一些东西来按其值删除项目。splice()
您可以使用 indexOf
方法,如下所示:
var index = array.indexOf(item);
if (index !== -1) {
array.splice(index, 1);
}
var array = [1,2,3,4]
var item = 3
var index = array.indexOf(item);
array.splice(index, 1);
console.log(array)
一句话就可以了,
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