У меня есть массив с телефоном и меткой времени, которую я округлил до ближайшей четверти.
Массив ввода прилагается в конце моих комментариев.
То, что я пытаюсь сделать, довольно сложно, и я пытался использовать комбинацию функций map / filter / redund, но не уверен, в каком порядке мне следует подходить к нему.
То, что я хотел бы, это следующее, с подсчетом каждого телефона по времени, отсортированным по лучшим телефонам дня - кроме того, он должен отображать 0 для часов, которые отсутствуют.
Идеальный выход:
[{
"OPPO R11s": [{
"time": 00:00,
"count": 20
}, {
"time": 00:15,
"count": 13
}, {
"time": 00:30,
"count": 0
}, {
"time": 00:45,
"count": 23
}],
"iPhone 7": [{
"time": 00:00,
"count": 20
}]
}]
Ввод:
[
{
"phone": "OPPO R11s",
"roundedTime": "10:45"
},
{
"phone": "iPhone 7",
"roundedTime": "03:15"
},
{
"phone": "Samsung Galaxy XCover 4",
"roundedTime": "11:45"
},
{
"phone": "iPhone XS Max",
"roundedTime": "12:00"
},
{
"phone": "iPhone XS",
"roundedTime": "01:00"
},
{
"phone": "Samsung Galaxy Note9",
"roundedTime": "02:30"
},
{
"phone": "Samsung Galaxy J4",
"roundedTime": "07:15"
},
{
"phone": "iPhone XS Max",
"roundedTime": "03:00"
},
{
"phone": "Samsung Galaxy J4 Plus",
"roundedTime": "02:45"
},
{
"phone": "iPhone 6s",
"roundedTime": "12:45"
},
{
"phone": "iPhone XS Max AirPods Bundle",
"roundedTime": "01:00"
}]
Чтобы объяснить дальше:
- Я бы хотел, чтобы телефон был ранжирован по общему количеству вхождений в массиве (т. Е. Если бы iPhone встречался чаще всего, он был бы вверху выходного массива).
- Время в 15-минутных интервалах, так что оно будет просто проходить через массив и подсчитывать, например, сколько «iPhone 6s» у нас было в 00:15.