我有一个看起来像这样的数组: var y = [1, 2, 3];
数组
我想从数组y
删除2
。 函数
如何使用jQuery从数组中删除特定值? 我尝试过pop()
可是老是删除最后一个元素。 this
//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) } } }
使用例 spa
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]]
要使用此原型函数,您须要将其粘贴到代码中。 而后,您能够将其应用于任何带有“点表示法”的数组: prototype
someArr.remove('elem1')
您可使用underscore.js 。 这确实使事情变得简单。 code
就您而言,您必须编写的全部代码都是- 对象
_.without([1,2,3], 2);
结果将是[1,3]。 索引
它减小了您编写的代码。 element
我有一个相似的任务,我须要根据数组中对象的属性一次删除多个对象。 rem
所以,通过几回迭代,我最终获得:
list = $.grep(list, function (o) { return !o.IsDeleted });
个人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个项目。
这个怎么运做:
array
value
的第一个索引 count
开始值的数量index
,因此咱们只是想要一个count
的1
我将使用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]