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

我想从数组y中移除2。

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


当前回答

//in case somebody needs something like this:  multidimensional array (two items)

var ar = [[0,'a'],[1,'b'],[2,'c'],[3,'d'],[4,'e'],[5,'f']];

var removeItem = 3;  


ar = jQuery.grep(ar, function(n) {
  return n[0] != removeItem;   //or n[1] for second item in two item array
});
ar;

其他回答

一个工作的JSFIDDLE

你可以这样做:

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

y = jQuery.grep(y, function(value) {
  return value != removeItem;
});

结果:

[1, 3]

http://snipplr.com/view/14381/remove-item-from-array-with-jquery/

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

所以经过几次迭代后,我最终得到:

list = $.grep(list, function (o) { return !o.IsDeleted });
//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')

首先检查元素是否存在于数组中

$.inArray(id, releaseArray) > -1

如果数组中存在该元素,则返回该元素的下标,否则返回-1

 releaseArray.splice($.inArray(id, releaseArray), 1);

现在,如果找到这个元素,上面的行将从数组中移除。总结下面的逻辑是检查和从数组中删除元素所需的代码。

  if ($.inArray(id, releaseArray) > -1) {
                releaseArray.splice($.inArray(id, releaseArray), 1);
            }
            else {
                releaseArray.push(id);
            }

你可以使用underscore.js。这真的让事情变得简单。

在你的例子中,你需要写的所有代码都是-

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

结果是[1,3]。

它减少了你编写的代码。