2016-02-19 136 views
0

我有兩個數組與對象:JS:比較數組的對象,並刪除重複

var oldUsers = [{"name": "Sam", "ext": 12}, {"name": "John", "ext": 15}]; 
var newUsers = [{"name": "John", "ext": 15}, {"name": "Jim", "ext": 19}]; 

現在我想從兩個陣列,這是在兩個數組中刪除對象。在這個例子中,我試圖從兩個數組中刪除{"name": "John", "ext": 15}。這兩個數組包含200個或多個對象,並在最後,我需要處理未刪除的對象,所以在最後我的陣列必須是這樣的:

var oldUsers = [{"name": "Sam", "ext": 12}]; 
var newUsers = [{"name": "Jim", "ext": 19}]; 

是否有人對你有一個想法如何通過循環數組來解決這個問題?我需要將數組與大量對象進行比較,然後想要使用splice()或類似的數組刪除重複條目。

在此先感謝!

+0

這將是非常低效的,你必須首先比較一個數組中的每個對象與另一個數組中的每個對象。你不能使用'=='或'==='進行比較,因爲在比較不同的對象時它們總是返回false。所以您還需要一個比較函數來遍歷每個對象的屬性,以查看其他對象是否具有相同的屬性和相同的值。試試吧,發佈你的嘗試。 – RobG

回答

0

對於在一個數組中找到的所有項目創建一組鍵值(例如,構建爲"<name>:<ext>",並遍歷另一個數組檢查該值),會更好。然後爲「交換」數組運行相同的事情。

相關問題