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

有没有方法从JavaScript数组中删除项目?

给定一个数组:

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

我想做一些事情:

removeItem('seven', ary);

我研究过splice()但是它只能删除位置号码,而我需要通过它的值删除某个项目。


如果您不允许将其添加到本机原型,则这可以是全局函数或自定义对象的方法。 它从数组中删除与任何参数匹配的所有项目。

Array.prototype.remove = function() {
    var what, a = arguments, L = a.length, ax;
    while (L && this.length) {
        what = a[--L];
        while ((ax = this.indexOf(what)) !== -1) {
            this.splice(ax, 1);
        }
    }
    return this;
};

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

ary.remove('seven');

/*  returned value: (Array)
three,eleven
*/

为了使其成为一个全球性的,

function removeA(arr) {
    var what, a = arguments, L = a.length, ax;
    while (L > 1 && arr.length) {
        what = a[--L];
        while ((ax= arr.indexOf(what)) !== -1) {
            arr.splice(ax, 1);
        }
    }
    return arr;
}
var ary = ['three', 'seven', 'eleven'];
removeA(ary, 'seven');


/*  returned value: (Array)
three,eleven
*/

为了照顾IE8和以下版本,

if(!Array.prototype.indexOf) {
    Array.prototype.indexOf = function(what, i) {
        i = i || 0;
        var L = this.length;
        while (i < L) {
            if(this[i] === what) return i;
            ++i;
        }
        return -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);
if (index !== -1) array.splice(index, 1);

console.log(array)

一个班轮将做到这一点,

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

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

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

这使得在JS中使用过滤器功能。 它在IE9及更高版本中得到支持。

它的功能(来自doc链接)

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

所以基本上,这与for (var key in ary) { ... }解决方案中的所有其他方法相同,只是for in IE6中支持for in构造。

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

链接地址: http://www.djcxy.com/p/19259.html

上一篇: How to remove item from array by value?

下一篇: Remove last item from array