У меня есть два массива объектов со значением с плавающей запятой и строкой для сокращенной категории.
const summer = [
{ _id: 'cat1', Datasets: 496, Average: 27.586688911290324 },
{ _id: 'catB', Datasets: 237, Average: 27.6677358649789 },
{ _id: 'cat3', Datasets: 15, Average: 25.567020000000001 },
{ _id: 'catD', Datasets: 51, Average: 24.998184313725492 }
]
const winter = [
{ _id: 'cat1', Datasets: 496, Average: 17.586688911290324 },
{ _id: 'catB', Datasets: 237, Average: 17.6677358649789 },
{ _id: 'cat3', Datasets: 15, Average: 15.567020000000001 },
{ _id: 'catD', Datasets: 51, Average: 14.998184313725492 }
]
Строки сокращенной категории должны быть «переведены» на правильную метку категории, а значения с плавающей запятой должны быть переданы в поле сезона.
const target = {
cat1: { label: 'Cars', index: 0 },
catB: { label: 'Planes', index: 1 },
cat3: { label: 'People', index: 2 },
catD: { label: 'Vegetables', index: 3 }
}
Таким образом, результат для данных примера должен быть:
{
labels: [
'Cars',
'Planes',
'People',
'Vegetables'
],
season: {
summer: [
27.586688911290324,
24.998184313725492,
27.6677358649789,
25.567020000000001
]
winter: [
17.586688911290324,
14.998184313725492,
17.6677358649789,
15.567020000000001
]
},
title: 'Just a title string'
}
Моя попытка выглядит так, но она обрабатывает только один массив данных:
const result = data.reduce((r, { _id, Average }) => {
r.labels[target[_id].index] = target[_id].label
r.season.winter[target[_id].index] = Average
return r
}, { labels: [], season: { winter: [] }, title: 'Just a title string' })