Pouze prvky, které mají hodnotu větší než nebo se rovnat prahové hodnotě, musí být udržovány v poli. Pak nové pole bude muset být vytvořen, který bude obsahovat několik objektů. Každý z těchto objektů bude mít dvě vlastnosti, a to začátek a konec.
Pokud existuje několik prvků v řadě (které mají časové razítko 10 minut od sebe), budou seskupeny ve stejném objektu. Kde počáteční hodnota bude razítko prvního prvku a na konci bude hodnota časové razítko hodnoty posledního prvku ze skupiny plus 10 min.
Pokud nejsou některé prvky následoval, na začátku bude hodnota časové razítko a na konci bude razítko plus 10 minut.
const data = [{
timestamp: '2021-11-23T14:00:00+0000',
amount: 21
},
{
timestamp: '2021-11-23T14:10:00+0000',
amount: 27
},
{
timestamp: '2021-11-23T14:20:00+0000',
amount: 31
},
{
timestamp: '2021-11-23T14:30:00+0000',
amount: 29
},
{
timestamp: '2021-11-23T14:40:00+0000',
amount: 18
},
{
timestamp: '2021-11-23T14:50:00+0000',
amount: 17
},
{
timestamp: '2021-11-23T15:00:00+0000',
amount: 25
},
{
timestamp: '2021-11-23T15:10:00+0000',
amount: 21
}
]
const threshold = 25
const aboveThreshold = data.filter(element => element.amount >= threshold)
const workSchedule = []
for (let i = 0; i < aboveThreshold.length; i++) {
if (i === 0) {
workSchedule.push({
start: aboveThreshold[i].timestamp,
end: aboveThreshold[i + 1].timestamp
})
}
if (i > 0 && i < aboveThreshold.length - 1) {
if (aboveThreshold[i].timestamp.slice(11, 13) === aboveThreshold[i + 1].timestamp.slice(11, 13)) {
workSchedule.push({
start: aboveThreshold[i].timestamp,
end: aboveThreshold[i + 1].timestamp
})
}
}
if (i === aboveThreshold.length - 1) {
workSchedule.push({
start: aboveThreshold[i].timestamp,
end: aboveThreshold[i].timestamp
})
}
}
console.log(workSchedule)
Ale konečný výsledek, co chci, je následující:
[
{
start: '2021-11-23T14:10:00+0000',
end: '2021-11-23T14:40:00+0000'
},
{
start: '2021-11-23T15:00:00+0000',
end: '2021-11-23T15:10:00+0000'
}
]
Doufám, že jsem byla jasná
1