2016-06-10 127 views
0

我在陣列的一些對象:從數組中刪除一個對象,並返回結果

var names = [ 
    { id:"101", name:"eric" }, 
    { id:"202", name:"john" }, 
    { id:"303", name:"zack" }, 
    { id:"404", name:"ron" } 
]; 

我想刪除的對象之一。我只有一塊數據來檢查對象數組,這是id = 202。最後,我想回到調整的陣列,像這樣:

[ 
    { id:"101", name:"eric" }, 
    { id:"303", name:"zack" }, 
    { id:"404", name:"ron" } 
]; 
+1

這不是JSON。這是一個JavaScript數組文字。 – Pang

+0

http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/ –

回答

1

隨着使用filter

var res = names.filter(function(obj) { 
    return obj.id !== "202"; 
}); 

console.log(res); 
+0

謝謝,結果就是我想要的。 –

0

嗨u可以使用下劃線JS很簡單

var names = [ 
    { id:"101", name:"eric" }, 
    { id:"202", name:"john" }, 
    { id:"303", name:"zack" }, 
    { id:"404", name:"ron" } 
]; 

console.log(_.reject(names, function(num){ return num.id == "202"; })) 

包括圖書館強調

+1

沒有必要使用庫! – Sun

+0

Underscore是一個JavaScript庫,它在不擴展任何內置對象的情況下提供了一大堆有用的函數式編程助手,Underscore提供了超過100個函數。在將來如果他想更好地使用這個寫多個操作,那麼我的建議 –

+1

首先學習和理解純JavaScript是更好的。然後,如果它是有用的,可以查看有用的庫以瞭解特殊情況。 – Sun

4

在JavaScript中,您可以使用Array.filter或Array.reject返回所需的對象數組。下面我已經演示瞭如何使用過濾器來實現這一點。

names.filter(function(eachObject){ return eachObject.id !== '202';}) 

Array.filter是一個本地函數,它將採用現有數組並返回一個具有過濾值的新數組。它通過迭代數組中的每個項目並在每個項目上運行謂詞/真值函數來完成此操作。如果一件物品通過了真相測試,它會被推入新的數組中。一旦迭代完成,過濾器將返回一個全新的數組,只有通過測試的值。

在上面的例子中,謂詞函數是我們傳入過濾器的匿名函數。你也可以傳入一個之前已經聲明過的函數。

function idNotTwoZeroTwo(eachObject){ return eachObject.id !== '202'}; 
names.filter(idNotTwoZeroTwo) // gives you same result 

另外,在您的示例中,您實際上並不代表正確的JSON。如果你有時間通過​​http://www.w3schools.com/json/default.asp的快速教程刷新。

還有一件事。如果將來你想檢查是否有適當的JSON,只需去http://jsonlint.com/並複製你的代碼。它會告訴你是否你的代碼是正確的JSON。它甚至會告訴你到底發生了什麼問題。

這是我的第一個答案,所以很抱歉,如果我沒有完全回答你的問題。希望能幫助到你。!