Я использую функцию
function joinslots(freeTimings){
joined=[];
if(freeTimings.length==1){
joined.push(freeTimings);
}
if(freeTimings.length>1){
for(i=0;i<=freeTimings.length;){
//console.log(freeTimings[i]);
time0=freeTimings[i].split("-");
first0=time0[0];
last0=time0[1];
time1=freeTimings[i+1].split("-");
first1=time1[0];
last1=time1[1];
if(last0==first1){
newfirst=first0;
newlast=last1;
newtime = newfirst+"-"+newlast;
joined.push(newtime);
if(i+2<freeTimings.length){
time2=freeTimings[i+2]
first2=time2[0];
last2=time2[1];
if(first2==last1){
i=i+2;
}
else i++;
}
else i+=2;
}
else{
joined.push(freeTimings[i]);
i++;
}
if(i==freeTimings.length-1){
joined.push(freeTimings[i-1]);
break;
}
}
}
return joined;
}
Входными данными для этой функции являются 30-минутные интервалы времени, и она должна возвращать объединенные интервалы за один час везде, где это возможно. Каждый раз, когда я исправляю ошибку, возникает другая, что заставляет меня думать, что здесь есть основная проблема, которую я не могу понять, кроме, возможно, выхода массива за границы, для которых я сохранил оператор if.
Например, ввод:
freeTimings=["8:00-8:30","8:30-9:00","9:00-9:30","12:00-12:30","12:30-13:00","13:00-13:30","13:30-14:00","14-14:30","15:30-16:00","16:00-16:30","17:30-18:00"]
возвращаемое значение должно быть
joined=["8:00-9:00","9:00-9:30","12:00-13:00","13:00-14:00","14:00-14:30","15:30-16:30","17:30-18:00"]
Поэтому любая помощь с исправлением моей функции будет оценена :)