2014-05-06 57 views
1

我有一個數組如何使用Javascript從數組中刪除數組?

var arr = [{"id":"1","name":"One"},{"id":"2","name":"Two"}] 

我推到陣列

arr.push(X) 

但我怎樣才能去除例如{ 「ID」: 「1」, 「姓名」: 「一」}來自此陣列名稱

+0

可能重複數組按對象屬性](http://stackoverflow.com/questions/16491758/remove-objects-from-array-by-object-property) –

回答

5

在普通的JavaScript,你必須通過數組搜索尋找每個對象的名稱匹配,然後刪除該對象:

function removeFromArrayByName(arr, name) { 
    for (var i = 0; i < arr.length; i++) { 
     if (arr[i].name === name) { 
      arr.splice(i, 1); 
      return; 
     } 
    } 
} 

或者,如果有可能不止一個匹配,並要刪除所有的比賽也有,你可以做到這一點(不向後遍歷並不會返回,當它找到一個匹配):

function removeFromArrayByName(arr, name) { 
    for (var i = arr.length - 1; i >= 0; i--) { 
     if (arr[i].name === name) { 
      arr.splice(i, 1); 
     } 
    } 
} 

或者,你甚至可以把它更通用的,你在屬性名傳遞也搜:

function removeFromArrayByName(arr, prop, val) { 
    for (var i = arr.length - 1; i >= 0; i--) { 
     if (arr[i][prop] === val) { 
      arr.splice(i, 1); 
     } 
    } 
} 
+0

謝謝!!!像魅力一樣工作 –

0

的問題是,對於普通的js,但如果你使用jQuery的,你可以寫這樣的功能:

function removeByName(arr, key){ 
    return $.grep(arr, function (n,i) { 
     return n.name != key; 
    }); 
} 

在你的情況,我會打電話的[刪除對象removeByName(arr,'One');