Yalnızca eşikten büyük veya eşiğe eşit bir değere sahip öğeler dizide tutulmalıdır. Daha sonra birkaç nesne içerecek yeni bir dizi oluşturulmalıdır. Bu nesnelerin her biri başlangıç ve bitiş olmak üzere iki özelliğe sahip olacaktır.
Üst üste birkaç öğe varsa (10 dakika arayla zaman damgası olan), bunlar aynı nesnede gruplandırılır. Burada başlangıç değeri ilk öğenin zaman damgası ve bitiş değeri grubun son öğesinin zaman damgası değeri artı 10 dk olacaktır.
Takip edilen birkaç öğe yoksa, başlangıç değeri zaman damgası ve bitiş zaman damgası artı 10 dakika olacaktır.
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)
Ancak istediğim sonuç şu şekildedir:
[
{
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'
}
]
Açık konuştum umarım
1