我有一个这样的数组:var y = [1,2,3];
我想从数组y中移除2。
如何使用jQuery从数组中删除一个特定的值?我尝试过pop(),但它总是删除最后一个元素。
我有一个这样的数组: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的计数
其他回答
第二个获得最多好评的答案是OP想要的预期行为的一行jQuery方法,但他们在代码的末尾出错了,而且它有一个缺陷。如果要删除的项实际上不在数组中,则最后一项将被删除。
一些人已经注意到了这个问题,一些人已经提供了防止这种情况发生的循环方法。我提供了我所能找到的最短、最干净的方法,并在他们的答案下评论了根据这个方法修复代码的方法。
var x = [1, 2, "bye", 3, 4];
var y = [1, 2, 3, 4];
var removeItem = "bye";
// Removing an item that exists in array
x.splice( $.inArray(removeItem,x), $.inArray(removeItem,x) ); // This is the one-liner used
// Removing an item that DOESN'T exist in array
y.splice( $.inArray(removeItem,y), $.inArray(removeItem,y) ); // Same usage, different array
// OUTPUT -- both cases are expected to be [1,2,3,4]
alert(x + '\n' + y);
数组x将很容易地删除元素“bye”,而数组y将保持不变。
使用参数$. inarray (removeItem,array)作为第二个参数实际上最终是要拼接的长度。由于没有找到该项,因此计算结果为array.splice(-1,-1);,这将导致没有任何内容被拼接…所有这些都不需要为此写一个循环。
我有一个类似的任务,我需要根据数组中对象的属性一次性删除多个对象。
所以经过几次迭代后,我最终得到:
list = $.grep(list, function (o) { return !o.IsDeleted });
使用jQuery,你可以像这样做一个单行操作:
例如:http://jsfiddle.net/HWKQY/
y.splice( $.inArray(removeItem, y), 1 );
使用本地的.splice()和jQuery的$. inarray()。
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/
我的版本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的计数