만 요소가 있는 값보다 크거나 같은 임계값에서 유지되어야 합니다. 새로운 배열이 있어야 만들어를 포함하는 여러 개체입니다. 이러한 각각의 물체가 있을 것이 두 가지 특성을 시작과 끝입니다.
이 있는 경우 여러 요소에서 행(는 타임 스탬프 10 분),그들은 그룹에서 동일한 개체입니다. 어디에 시작 값이 될 것입니다 타임스탬프의 첫 번째 요소와 끝 값이 될 것입니다 타임스탬프 가치의 마지막 요소의 그룹 plus10min.
하지 않은 경우 여러 요소에 따라 시작 값이 될 것입니다 타임스탬프 및 종료 될 것입니다 타임 스탬프 플러스는 10 분입니다.
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)
하지만 최종 결과하고 싶은 다음과 같다:
[
{
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'
}
]
나는 분명
1