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

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

我想从数组y删除2函数

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


#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)
        }
    }
}

使用例 spa

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]]

要使用此原型函数,您须要将其粘贴到代码中。 而后,您能够将其应用于任何带有“点表示法”的数组: prototype

someArr.remove('elem1')

#2楼

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

就您而言,您必须编写的全部代码都是- 对象

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

结果将是[1,3]。 索引

它减小了您编写的代码。 element


#3楼

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

所以,通过几回迭代,我最终获得:

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]

您能够在此处以神奇宝贝主题的动做查看全部这些信息。

相关文章
相关标签/搜索