小编典典

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

all

是否有从 JavaScript 数组中删除项目的方法?

给定一个数组:

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

我想做类似的事情:

removeItem('seven', ary);

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


阅读 193

收藏
2022-02-25

共1个答案

小编典典

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

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;
    };
}
2022-02-25