深度合并非匹配的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')));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章