@run182

Как объединить элементы разных массивов с одинаковыми значениями свойств?

Как добавить в элементы массива arr1 объекты из массива arr2, чьи parent_id соответствуют id элементов arr1?

var arr1 = [
    {
        id: 1
    },{
        id: 5
    }
];
var arr2 = [
    {
        parent_id: 1
    },{
        parent_id: 5
    }
]

То есть получить в итоге такой:

[ {"id":1, "arr2":[ {"parent_id":1} ]}, {"id":5, "arr2":[ {"parent_id":5}  ]} ]
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Сгруппировать arr2 по значениям parent_id:

const groupedArr2 = arr2.reduce((acc, n) => {
  (acc[n.parent_id] = acc[n.parent_id] || []).push(n);
  return acc;
}, {});

Дальше можно обновить существующий arr1:

arr1.forEach(n => n.arr2 = groupedArr2[n.id] || []);

Или собрать новый:

const newArr1 = arr1.map(n => ({ ...n, arr2: groupedArr2[n.id] || [] }));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы