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

我想从数组y中移除2。

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


当前回答

我的版本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函数,用于查找数组中值的第一个索引 如果未找到值,则返回-1,因此在执行删除之前检查i是否是有效的索引。删除索引-1意味着删除最后一个,这在这里没有帮助。 .splice(index, count)删除从index开始的count个值,所以我们只需要1的计数

其他回答

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

移除数组中的项目

var arr = ["jQuery", "JavaScript", "HTML", "Ajax", "Css"];
var itemtoRemove = "HTML";
arr.splice($.inArray(itemtoRemove, arr), 1);

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

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

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

我将用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]

你可以在《口袋妖怪》主题的动作中看到这一切。

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

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

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

结果是[1,3]。

它减少了你编写的代码。