如何根据值从数组中删除项目?
如何根据值从数组中删除项目?
这个问题已经有答案了:
是否有一种方法可以从JavaScript数组中删除一个项?
给定一个数组:
var ary = ['three', 'seven', 'eleven'];
我想要做这样的事情:
removeItem('seven', ary);
我查阅了splice()
,但它只能按位置号码删除,而我需要删除具有特定值的项。
admin 更改状态以发布 2023年5月22日
可以使用一个一行代码实现:
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中的filter函数。它在IE9及以上版本中支持。
它的作用(来自于文档链接):
filter()方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。filter()不会对空数组进行检测。filter()不会改变原始数组。
所以基本上,这与所有其他的for (var key in ary) { ... }
解决方案是相同的,只是for in
构造在IE6及以上版本中支持。
基本上,filter是一个方便的方法,与for in
构造相比更加美观(而且可链式调用)(据我所知)。
你可以像这样使用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)