深层合并JavaScript对象的非匹配阵列



我必须要诸如:

之类的对象数组

https://plnkr.co/edit/rqs9wws1hcxmukgigehm?p=preview

我想组合它们,以便如果数组元素在第二组中没有出现,则将其带到(如果确实如此),则添加了丢失的元素。

所以我想看到的是:

[{"car":"A","miles":100},{"car":"B","miles":100},{"car":"C","miles":100,"sold":"Y"}]
[{"car":"B","miles":100,"sold":"Y"},{"car":"C","miles":100,"sold":"Y"}]
[{"car":"A","miles":100},{"car":"B","miles":100,"sold":"Y"},{"car":"C","miles":100,"sold":"Y"}]

注意"汽车a"仅在第一个数组中存在,并被载入。

Angular的合并只有在对象匹配的情况下才能起作用。是否有一种优雅的方式合并两个对象?我认为我需要循环循环到阵列并建立一个常见的阵列。如果为每个对象创建一个唯一的标识符使匹配更容易。

如果您开放使用lodash库(或下划线),它会使您的生活变得更加轻松(通常),它也可以与Angular一起使用。

您可以通过使用Lodash进行以下操作来实现所需的目标:

_.values(_.extend(_.keyBy(a, 'car'), _.keyBy(b, 'car')));

最新更新