Javascript 对象的深度合并非匹配数组
Deep Merging Non Matching Array of Javascript Objects
我必须使用对象数组,例如:
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"}]
注意 "Car A" 仅存在于第一个数组中并被保留。
Angular 的合并只有在对象匹配时才会起作用。有没有一种优雅的方法来合并两个对象数组?我在想我需要遍历数组并建立一个通用数组。如果为每个对象创建一个唯一标识符使匹配更容易。
如果您愿意使用 Lodash 库(或下划线),它会让您的生活更轻松(一般而言),它与 Angular 一起使用也很不错。
您可以通过使用 Lodash 执行以下操作来实现您的需求:
_.values(_.extend(_.keyBy(a, 'car'), _.keyBy(b, 'car')));
我必须使用对象数组,例如:
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"}]
注意 "Car A" 仅存在于第一个数组中并被保留。
Angular 的合并只有在对象匹配时才会起作用。有没有一种优雅的方法来合并两个对象数组?我在想我需要遍历数组并建立一个通用数组。如果为每个对象创建一个唯一标识符使匹配更容易。
如果您愿意使用 Lodash 库(或下划线),它会让您的生活更轻松(一般而言),它与 Angular 一起使用也很不错。
您可以通过使用 Lodash 执行以下操作来实现您的需求:
_.values(_.extend(_.keyBy(a, 'car'), _.keyBy(b, 'car')));