Устранение ошибок при использовании индексирования
Ошибки Off by One (иногда называемые OBOE) возникают, когда вы пытаетесь настроить таргетинг на конкретный индекс строки
или массива (чтобы разрезать или получить доступ к сегменту) или при циклическом обходе их индексов. Индексирование
JavaScript начинается с нуля, а не с единицы, что означает, что последний индекс всегда на единицу меньше длины
элемента. Если вы попытаетесь получить доступ к индексу, равному длине, программа может выдать ошибку ссылки «индекс вне
допустимого диапазона» или напечатать undefined
.
Когда вы используете строковые методы или методы массива, которые принимают диапазоны индексов в качестве аргументов, это помогает прочитать документацию и понять, являются ли они включающими (элемент по данному индексу является частью того, что возвращается) или нет. Вот несколько примеров ошибок отключения по одному:
let alphabet = "abcdefghijklmnopqrstuvwxyz";
let len = alphabet.length;
for (let i = 0; i <= len; i++) {
console.log(alphabet[i]);
}
for (let j=1; j < len; j++) {
console.log(alphabet[j]);
}
for (let k=0; k < len; k++) {
console.log(alphabet[k]);
}
В первом примере цикл повторяется слишком много раз, а во втором цикле слишком мало (отсутствует первый индекс, 0). Третий пример верен.
Исправьте две ошибки индексации в следующей функции, чтобы все номера с 1 по 5 были напечатаны на консоли.