Мне нужна помощь для объединения карты и группы для преобразования моих данных:
const source = [
{ _id: { hour: 18, score: 1 }, value: 45 },
{ _id: { hour: 18, score: 5 }, value: 23 },
{ _id: { hour: 18, score: 4 }, value: 34 },
{ _id: { hour: 20, score: 1 }, value: 47 },
{ _id: { hour: 20, score: 5 }, value: 25 },
{ _id: { hour: 20, score: 4 }, value: 36 },
{ _id: { hour: 19, score: 1 }, value: 46 },
{ _id: { hour: 19, score: 5 }, value: 24 },
{ _id: { hour: 19, score: 4 }, value: 35 }
]
Вот как должен выглядеть результат:
{
label: [18, 19, 20], // reordered hour values
datasets: [
{ // each sorted score should get the values in an array sorted by hour
data: [45, 46, 47],
score: 1
},
{
data: [34, 35, 36],
score: 4
},
{
data: [23, 24, 25],
score: 5
}
]
}
Так что для метки I 'я просто делаю
const label = data.map(d => d._id.hour)
Как мне получить набор данных data
для каждого балла? Я бы подумал о цикле:
label.forEach(function(element) {
datasets.push({
data: source.filter(d => d._id.hour === element).map(d => d.value),
score: // ??
})
})
Но это не работает, так как я получаю все наборы данных за час, но мне нужны некоторые сгруппированные данные для оценки. А также с моей попыткой не сортировка вообще. Требуется сортировка по часам и счету.