如何使用jQuery从数组中删除特定值

北城以北 提交于 2020-02-25 18:58:19

我有一个看起来像这样的数组: var y = [1, 2, 3];

我想从数组y删除2

如何使用jQuery从数组中删除特定值? 我尝试过pop()但是总是删除最后一个元素。


#1楼

//This prototype function allows you to remove even array from array
Array.prototype.remove = function(x) { 
    var i;
    for(i in this){
        if(this[i].toString() == x.toString()){
            this.splice(i,1)
        }
    }
}

使用例

var arr = [1,2,[1,1], 'abc'];
arr.remove([1,1]);
console.log(arr) //[1, 2, 'abc']

var arr = [1,2,[1,1], 'abc'];
arr.remove(1);
console.log(arr) //[2, [1,1], 'abc']

var arr = [1,2,[1,1], 'abc'];
arr.remove('abc');
console.log(arr) //[1, 2, [1,1]]

要使用此原型函数,您需要将其粘贴到代码中。 然后,您可以将其应用于任何带有“点表示法”的数组:

someArr.remove('elem1')

#2楼

您可以使用underscore.js 。 这确实使事情变得简单。

就您而言,您必须编写的所有代码都是-

_.without([1,2,3], 2);

结果将是[1,3]。

它减少了您编写的代码。


#3楼

我有一个类似的任务,我需要根据数组中对象的属性一次删除多个对象。

因此,经过几次迭代,我最终得到:

list = $.grep(list, function (o) { return !o.IsDeleted });

#4楼

我的user113716版本。 如果找不到匹配项,他将删除一个值,这不好。

var y = [1, 2, 3]
var removeItem = 2;

var i = $.inArray(removeItem,y)

if (i >= 0){
    y.splice(i, 1);
}

alert(y);

现在,如果找到匹配项,则删除1个项目;如果找不到匹配项,则删除0个项目。

这个怎么运作:

  • $ .inArray(value,array)是一个jQuery函数,用于查找array value的第一个索引
  • 如果找不到该值,则上面的代码返回-1,因此在执行删除操作之前请检查i是否为有效索引。 删除索引-1意味着删除最后一个,这在这里没有帮助。
  • .splice(指数计数)删除count开始值的数量index ,所以我们只是想要一个count1

#5楼

我将使用pick_and_remove()函数扩展Array类,如下所示:

var ArrayInstanceExtensions = {
    pick_and_remove: function(index){
        var picked_element = this[index];
        this.splice(index,1);
        return picked_element;
    } 
};
$.extend(Array.prototype, ArrayInstanceExtensions);

尽管看起来有些冗长,但是您现在可以在可能需要的任何数组上调用pick_and_remove()

用法:

array = [4,5,6]           //=> [4,5,6]
array.pick_and_remove(1); //=> 5
array;                    //=> [4,6]

您可以在此处以神奇宝贝主题的动作查看所有这些信息。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!