如何使用jQuery從數組中刪除特定值

我有一個看起來像這樣的數組: var y = [1, 2, 3]; 數組

我想從數組y刪除2函數

如何使用jQuery從數組中刪除特定值? 我嘗試過pop()可是老是刪除最後一個元素。 this


#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)
        }
    }
}

使用例 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')

#2樓

您可使用underscore.js 。 這確實使事情變得簡單。 code

就您而言,您必須編寫的全部代碼都是- 對象

_.without([1,2,3], 2);

結果將是[1,3]。 索引

它減小了您編寫的代碼。 element


#3樓

我有一個相似的任務,我須要根據數組中對象的屬性一次刪除多個對象。 rem

所以,通過幾回迭代,我最終獲得:

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 ,因此咱們只是想要一個count1

#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]

您能夠在此處以神奇寶貝主題的動做查看全部這些信息。

相關文章
相關標籤/搜索