以角度2相交两个对象

时间:2016-09-28 06:20:51

标签: javascript angular typescript

我想做的是交叉两个物体。

我想比较对象,如果它们在相同的键上有相同的值,只需将它们添加到另一个对象。

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];

是的,我确实检查了SO的其他解决方案,我没有结果。

修改

我的尝试可能不起作用,因为我的对象is not an array type or a string type

2 个答案:

答案 0 :(得分:1)

使用lodash

在这里你会找到一份好的文件: https://lodash.com/docs/4.16.2#intersection

我们经常以良好的经验使用它

答案 1 :(得分:1)

对于角度2而言,这不是一个问题,但本身就是更多的javascript。没有角度函数可能会帮助你

使用lodash或underscore.js可能会提高效率和实用性

但是如果你坚持要以自己的方式做到这一点。有两种情况

一个是你已经知道要比较多少个对象

其中两个是你不知道你将要比较多少个对象

对于第一种情况,这将是一个简单的循环与&&逻辑比较的案例

对于案例二,我建议你先将所有需要比较的对象推送到一个数组中并在那里进行迭代。