Если нет перекрывающихся периодов, а данные уже отсортированы, вам следует реализовать бинарный поиск:
function findIndex(data, time) {
let left = 0;
let right = data.length-1;
while (left <= right) {
const mid = (right + left)>>1;
if (time > data[mid].end) {
left = mid + 1;
} else if (time < data[mid].start) {
right = mid - 1;
} else {
return mid;
}
}
return -1;
}
Это вернет -1, если совпадения нет, или индекс совпадения,С этим индексом вы можете получить соответствующий объект и одно из его свойств.
Сложность времени составляет O (logn) .
Примечание. Начальные / конечные свойства необходимо определить как числа , а не в виде строк, поэтому вы получите результат числового сравнения, а не алфавитный.