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

我想从数组y中移除2。

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


当前回答

有一个简单的解决方案与剪接。根据W3School,拼接语法如下;

array.splice(index, howmany, item1, ....., itemX)

需要索引。指定在什么位置添加/删除项的整数。使用负值指定从数组末尾开始的位置

需要多少。要删除的项的数目。如果设置为0,则不会删除任何项

item1,……, itemX可选。要添加到数组中的新项

请记住,下面的js将从给定数组中弹出一个或多个匹配的项,否则不会删除数组的最后一项。

var x = [1,2,3,4,5,4,4,6,7];
var item = 4;
var startItemIndex = $.inArray(item, x);
var itemsFound = x.filter(function(elem){
                            return elem == item;
                          }).length;

Or

var itemsFound = $.grep(x, function (elem) {
                              return elem == item;
                           }).length;

所以期末题应该是这样的

x.splice( startItemIndex , itemsFound );

希望这能有所帮助。

其他回答

我的版本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的计数

不是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')

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

$.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);
            }

Filter方法在vanilla js中很有用。这可用于Array对象。

var arr = [1, 2, 3, 4, 5, 5];

var result = arr.filter(function(elem){
   return elem != 5; 
});//result -> [1,2,3,4]

http://jsfiddle.net/emrefatih47/ar0dhvhw/

所以,在Ecmascript 6:

let values = [1,2,3,4,5];
let evens = values.filter(v => v % 2 == 0);
alert(evens);

https://jsfiddle.net/emrefatih47/nnn3c2fo/

移除数组中的项目

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