我有一个像这样的数组:
let arr = [
{
title: 'Some title',
start: '09:30:59',
end: '09:33:59',
},
{
title: 'Some title',
start: '09:33:59',
end: '09:35:59',
},
{
title: 'Some title',
start: '09:35:59',
end: '09:40:59',
},
{
title: 'Some title',
start: '09:30:59',
end: '09:45:59',
}
...
];
我希望能够按照一定的步长(例如10)对数组进行分组:
let result = [
{
start: '09:30:59',
end: '09:40:59',
arr: [
{
title: 'Some title',
start: '09:30:59',
end: '09:33:59',
},
{
title: 'Some title',
start: '09:33:59',
end: '09:35:59',
},
],
},
{
start: '09:40:59',
end: '09:50:59',
arr: [
{
title: 'Some title',
start: '09:35:59',
end: '09:40:59',
},
{
title: 'Some title',
start: '09:30:59',
end: '09:45:59',
}
],
},
...
];
我试图去做它:
let step = 10;
let diffMinutes = dayjs(arr[arr.length - 1].end).diff(arr[0].start, 'm') / step;
let newArr = [];
let result = [];
for (let t = 0; t < diffMinutes; t++) {
newArr = [];
for (let i = 0; i < arr.length; i++) {
if (dayjs(arr[i].start).isBetween(arr[0].start, dayjs(arr[0].start).add(step, 'm').format('YYYY-MM-DD HH:mm'))) {
newArr.push(state.events[i]);
}
}
result.push(
{
...
arr: newArr
}
)
}
我使用了dayjs
添加了一个条件,检查事件开始时间是否进入了某个时间段。我认为这可以比我做的更容易。
结果应该是按10分钟为单位分组的数组。
假设在else语句中,我应该使用上一个数组结果的最后一项。
但是它仅适用于第一次迭代,我不知道如何在下一次迭代中实现。
请帮帮我。