我有一个看起来像这样的数组: var y = [1, 2, 3];
我想从数组y
删除2
。
如何使用jQuery从数组中删除特定值? 我尝试过pop()
但是总是删除最后一个元素。
#1楼
//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')
#2楼
您可以使用underscore.js 。 这确实使事情变得简单。
就您而言,您必须编写的所有代码都是-
_.without([1,2,3], 2);
结果将是[1,3]。
它减少了您编写的代码。
#3楼
我有一个类似的任务,我需要根据数组中对象的属性一次删除多个对象。
因此,经过几次迭代,我最终得到:
list = $.grep(list, function (o) { return !o.IsDeleted });
#4楼
我的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函数,用于查找
array
value
的第一个索引 - 如果找不到该值,则上面的代码返回-1,因此在执行删除操作之前请检查i是否为有效索引。 删除索引-1意味着删除最后一个,这在这里没有帮助。
- .splice(指数计数)删除
count
开始值的数量index
,所以我们只是想要一个count
的1
#5楼
我将使用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]
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3164306