fn(
list = [
{
day: '2022-08-15',
minute: '18:29',
vieweers: 31
},
{
day: '2022-08-15',
minute: '19:59',
vieweers: 32
}
],
step = 1,
num = 5,
key = 'minute'
) {
const timeSlot = step => {
var date = new Date()
date.setHours('00')
date.setSeconds('00')
date.setUTCMinutes('00')
var arr = [],
timeArr = []
var slotNum = (24 * 60) / step
for (var f = 0; f < slotNum; f++) {
var time = new Date(Number(date.getTime()) + Number(step * 60 * 1000 * f))
var hour = '',
sec = ''
time.getHours() < 10 ? (hour = '0' + time.getHours()) : (hour = time.getHours())
time.getMinutes() < 10 ? (sec = '0' + time.getMinutes()) : (sec = time.getMinutes())
timeArr.push({ [key]: hour + ':' + sec })
}
return timeArr
}
timeSlot(step).map((it, ix) => {
it.index = ix
let obj = list.find(items => items[key] === it[key])
if (obj) {
obj.index = ix
} else {
list.push({
...it,
vieweers: 0
})
}
})
let c = list.slice().sort((aa, bb) => aa.index - bb.index)
const productData = []
const b = Math.ceil(c.length / num)
for (let i = 0; i < b; i++) {
productData.push({
total: c.slice(i * num, i * num + num).reduce((acc, cur) => acc + cur.vieweers, 0),
fiveMinute: c.slice(i * num, i * num + num)[0][key],
[key]: c.slice(i * num, i * num + num)
})
}
return productData
},
let bb = this.fn()
console.log(bb)