Я пытаюсь объединить 2 массива объектов в один массив объектов, сохраняя при этом порядок arr1
в объединенном массиве.
В arr1
существует ключ internalName
, который присутствует в arr2
. Клавиша type
в arr1
представляет значение клавиши от arr2
- например, тип avg
в arr1
должен соответствовать ключу average
arr2
с тем же internalName
.
const arr1 = [
{internalName: "14_17_years_old", type: "avg"},
{internalName: "14_17_years_old", type: "sum"},
{internalName: "18_24_years_old", type: "avg"},
{internalName: "25_34_years_old", type: "sum"},
{internalName: "35_44_years_old", type: "avg"},
{internalName: "35_44_years_old", type: "sum"},
{internalName: "activity_attendance", type: "sum"},
];
const arr2 = [
{average: 83, count: 7, internalName: "14_17_years_old", name: "14-17 Years Old", sum: 578},
{average: 168, count: 11, internalName: "18_24_years_old", name: "18-24 Years Old", sum: 1850},
{average: 193, count: 11, internalName: "25_34_years_old", name: "25-34 Years Old", sum: 2126},
{average: 237, count: 10, internalName: "35_44_years_old", name: "35-44 Years Old", sum: 2370},
{average: 828, count: 28, internalName: "activity_attendance", name: "Activity Attendance", sum: 23190}
];
Ожидаемый результат:
const expected = [
{internalName: "14_17_years_old", name: "14-17 Years Old", type: "avg", value: 83},
{internalName: "14_17_years_old", name: "14-17 Years Old", type: "sum", value: 578},
{internalName: "18_24_years_old", name: "18-24 Years Old", type: "avg", value: 168},
{internalName: "25_34_years_old", name: "25-34 Years Old", type: "sum", value: 2126},
{internalName: "35_44_years_old", name: "35-44 Years Old", type: "avg", value: 237},
{internalName: "35_44_years_old", name: "35-44 Years Old", type: "sum", value: 2370},
{internalName: "activity_attendance", name: "Activity Attendance", type: "sum", value: 23190},
];
Я начал по маршруту, используя forEach
с вложенным map
, но он ничего не возвращает.
arr1.forEach((x) => {
if (x.type === 'sum') {
return arr2.map(y => ({
internalName: y.internalName,
name: y.name,
type: 'sum',
value: y.sum,
}));
}
return arr2.map(y => ({
internalName: y.internalName,
name: y.name,
type: 'avg',
value: y.avg,
}));
});
На самом деле есть вопрос из двух частей - как я могу сделать это и сделать это без такого большого количества кода?