Catch Off By One Errors When Using Indexing

Ошибки 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 были напечатаны на консоли.