В самом конце программы нужны удалить некоторые объекты, но в переменную b не записывается значение свойства endSrv
var client = [];
client[1] = {
intervalVhod: 5,
intervalSrv: 11,
input: 5,
startSrv: 5,
endSrv: 16,
};
console.log(client[1]);
for (var i = 2; i < 30; i++) {
var intervalVhod = Math.floor(Math.random() * (7 - 2) + 2);
var intervalSrv = Math.floor(Math.random() * (16 - 2) + 2);
var startSrv;
client[i] = {
intervalVhod: intervalVhod,
intervalSrv: intervalSrv,
};
var input = client[i - 1].input + client[i - 1].intervalVhod;
if (input < client[i - 1].endSrv) {
startSrv = client[i - 1].endSrv
} else {
startSrv = input
};
client[i].input = input;
client[i].startSrv = startSrv;
client[i].endSrv = startSrv + intervalSrv;
console.log(client[i]);
}
for (var i = 2; i < 30; i++) {
var a = client[i + 2].input;
var b = client[i - 1].endSrv;
console.log("i=",i," a=",a, " b=",b);
if (a < b) {
delete client[i + 2]
} else {};
};
Вы отпиливаете сук
delete client[i + 2];
на который собираетесь залезть через три итерации
var b = client[i - 1].endSrv;
Update
Вы можете собирать индексы элементов, которые надо удалить, в отдельный массив и потом пройти по этому массиву (с конца к началу), удаляя из client элементы на соответствующих местах, используя метод splice (https://www.w3schools.com/jsref/jsref_splice.asp). Или удалять сразу, но тогда надо помнить, что массив client будет уменьшаться в процессе того, как Вы по нему итерируете.
Даже если Вы ничего не удалите из client, Вас ждет неприятный сюрприз в конце цикла, когда Вы выйдете за границу массива: var a = client[i + 2].input; при i = 28.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости