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

我想从数组y中移除2。

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


当前回答

/** SUBTRACT ARRAYS **/

function subtractarrays(array1, array2){
    var difference = [];
    for( var i = 0; i < array1.length; i++ ) {
        if( $.inArray( array1[i], array2 ) == -1 ) {
                difference.push(array1[i]);
        }
    }
return difference;
}  

然后可以在代码中的任何地方调用该函数。

var I_like    = ["love", "sex", "food"];
var she_likes = ["love", "food"];

alert( "what I like and she does't like is: " + subtractarrays( I_like, she_likes ) ); //returns "Naughty :P"!

这在所有情况下都有效,并避免了上述方法中的问题。希望有帮助!

其他回答

在Javascript中没有本机的方法来做到这一点。您可以使用一个库或编写一个小函数来代替:http://ejohn.org/blog/javascript-array-remove/

使用jQuery,你可以像这样做一个单行操作:

例如:http://jsfiddle.net/HWKQY/

y.splice( $.inArray(removeItem, y), 1 );

使用本地的.splice()和jQuery的$. inarray()。

//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')

不是jQuery的方式,但是… 为什么不用更简单的方法呢?从下面的数组中删除'c'

var a = ['a','b','c','d']
a.splice(a.indexOf('c'),1);
>["c"]
a
["a", "b", "d"]

你也可以使用:(给自己的提示:不要修改你不拥有的对象)

Array.prototype.remove = function(v) { this.splice(this.indexOf(v) == -1 ? this.length : this.indexOf(v), 1); }
var a = ['a','b','c'];
a.remove('c'); //value of "a" is now ['a','b']

添加是simplera.push('c')

一个工作的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/