2016-11-28 2 views
0

я должен массивов объектов, таких как:Deep Слияния Non Matching Массив 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"}] 

Примечание «АВТОМОБИЛЬ» существует только в первом массиве и переносится.

Слияние углов будет работать только в том случае, если объекты совпадают. Есть ли элегантный способ объединить два массива объектов? Я думаю, мне нужно будет перебрать массивы и создать общий массив. Если создать уникальный идентификатор для каждого объекта, упростить сопоставление.

+0

Вы просто хотите, чтобы объединить свои массивы без дубликатов, верно? – Mistalis

ответ

0

Если вы открыты для использования библиотеки Lodash (или подчеркивания), это сделает вашу жизнь намного проще (в общем), она отлично поработает с Angular.

Вы могли бы добиться того, что вам нужно, выполнив следующие действия с Lodash:

_.values(_.extend(_.keyBy(a, 'car'), _.keyBy(b, 'car'))); 
Смежные вопросы