2016-09-28 70 views
0

我想要做的是相交兩個對象。在角2中相交兩個對象

我想比較對象,如果它們在相同的鍵上有相同的值,只需將它們添加到另一個對象。

obj1 = { "Projects": [ "test" ], "Companies": [ "facebook", "google", "yahoo" ], "Locations": [ "LA", "NY" ], "Interests": [] }

obj2 = { "Projects": [ "test" ], "Companies": [ "netflix", "skype", "facebook" ], "Locations": [ "sttugart", "torino", "LA" ], 「興趣」:[]}

結果將是:

obj3 = { "Projects": [ "test" ], "Companies": [ "facebook" ], "Locations": [ "LA" ], "Interests": [] }

我想什麼是這樣的:

intersect(obj1, obj2) 
    for(let key of obj1) 
     if(obj2[key] == obj1[key]) obj3[key] = obj2[key]; 

是的,我確實檢查過其他解決方案,我沒有結果。

編輯

我嘗試dind't可能是工作,因爲我的目標is not an array type or a string type

回答

1

這不是真正的問題只是角2,但本身更多的JavaScript。無角的功能可能會幫助你在這裏

使用lodash或underscore.js如果你堅持,你需要做到這一點以自己的方式可能被證明是更具生產力和有用

不過。有兩種情況

之一是,你已經知道你需要多少物體比較

二是,你不知道你有多少對象被比較

對於一個情況下它會一簡單與& &案件環路邏輯比較

對於情況下,兩個我建議你首先推動所有對象是需要比較到一個數組中,並通過有迭代。

+0

像合併的對象,而不是,刪除重複? –

+0

你也可以這樣做......刪除某個特定值至少出現x個值的實例 x是您正在比較的對象的數量,您可以確保該特定值存在於所有對象中(假設每個對象只包含該值的一個值) –

+0

https://lodash.com/docs/4.16.2#intersection 我完全建議使用這樣的函數,因爲它們證明更有效 –