我有一個看起來像這樣的數組: 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]