2016-09-28 53 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 我完全建议使用这样的函数,因为它们证明更有效 –