Я создаю таблицу, которая будет функционировать как тепловая карта, показывающая совокупные значения (в данном случае продаж) на основе дня недели и часа.Ось Y таблицы - дни недели (Sun-Sat), а заголовок оси X / таблицы - часы 0-23.
При наличии нескольких дней, например, 2018-01-01 и 2018-01-08, оба понедельника, данные о продажах должны объединяться.Кроме того, после объединения этих дней могут быть дублированные часы, и в этом случае значения должны объединиться, чтобы показать совокупную стоимость (продажи) в этот час по понедельникам.
Если это имеет значение, этот проект находится в React.
Данные будут выглядеть так:
data2: [
{
day: "2018-01-01",
sales: [{hour: 6, value: 23}, {hour: 9, value: 164}]
},
{
day: "2018-01-02",
sales: [{hour: 3, value: 223}, {hour: 4, value: 12}]
},
{
day: "2018-01-03",
sales: [{hour: 7, value: 323}, {hour: 3, value: 86}]
},
{
day: "2018-01-04",
sales: [{hour: 5, value: 173}, {hour: 21, value: 65}]
},
{
day: "2018-01-05",
sales: [{hour: 12, value: 193}, {hour: 1, value: 53}]
},
{
day: "2018-01-06",
sales: [{hour: 15, value: 263}, {hour: 2, value: 56}]
},
{
day: "2018-01-07",
sales: [{hour: 18, value: 89}, {hour: 8, value: 378}]
},
{
day: "2018-01-08",
sales: [{hour: 6, value: 76}, {hour: 17, value: 398}]
}
]
Я считаю, что мне нужно создать новый массив из этогоданные, чтобы упростить создание таблицы.До сих пор в componentDidMount () я использую moment.js, чтобы получить день недели каждой даты, но я не уверен, как лучше объединить дубликаты, а затем дубликаты часов.
Я подумал об использовании _underscore, но не могу понять, как бы я это использовал.
Пока:
var newDataArr = [];
for(var i = 0; i < this.state.data2.length; i++){
var day = moment(this.state.data2[i].day,'YYY-MM-DD').format('ddd');
console.log(day);
if(newDataArr).contains(day) {
// combine?
} else {
// add new day of week
}
}
Мой желаемый результат будет примерно таким:
newData2: [
{
day: "Sun",
sales: [{hour: 6, value: 99}, {hour: 9, value: 164}, {hour: 17, value: 398}]
},
{
day: "Mon",
sales: [{hour: 3, value: 223}, {hour: 4, value: 12}]
},
{
day: "Tue",
sales: [{hour: 7, value: 323}, {hour: 3, value: 86}]
},
{
day: "Wed",
sales: [{hour: 5, value: 173}, {hour: 21, value: 65}]
},
{
day: "Thu",
sales: [{hour: 12, value: 193}, {hour: 1, value: 53}]
},
{
day: "Fri",
sales: [{hour: 15, value: 263}, {hour: 2, value: 56}]
},
{
day: "Sat",
sales: [{hour: 18, value: 89}, {hour: 8, value: 378}]
}
]