Если я попрошу вас посчитать пальцы на руке, то с какой цифры вы начнёте отcчёт? С цифры «один»? Так? Любой разумный человек на этой планете начнёт считать любые вещи с единицы.
Но разработчики языка JavaScript почему то решили начинать отcчёт «индексных коллекций» (массивов) не с единицы, а с нуля. То есть первый элемент массива будет иметь индекс отсчёта ноль (0). От этого нюанса начинает болеть голова у начинающего программиста. Он только научился считать пальцы на руках, а ему предлагают какие-то «сдвиги» в числовых рядах.
И вот однажды ученик задаётся вопросом, а почему запись в коде имеет вид — (array.length -1).
Видео инструкция
В этом видео приводится объяснение кодовой записи (array.length -1) в JavaScript. Ввод команд осуществляется в консоль браузера Google Chrome. Результат виден сразу.
Я приведу три примера:
var m1 = [1,2,3]
var m2 = [1,2,3,4,5]
var m3 = [1,2,3,4,5,6,7]
Посмотрите на них внимательно. Любой массив в JavaScript имеет свойство длины «length«. Это свойство хранит количество всех элементов в массиве. То есть свойство «length» считает также как и люди.
Посмотрите на значения свойства «length» во всех трёх массивах.
А теперь вопрос: Что общего между свойством «length» и индексом последнего элемента массива?
Вам не кажется, что индекс последнего элемента ЛЮБОГО массива на единицу меньше, чем значение его длины?
Вывод
Если мы ходим получить последний элемент из любого массива, то мы должны из длины массива вычесть единицу т. к. индексы в массиве всегда будут на единицу меньше, чем его длина. Потому что первый элемент начинается НЕ с индекса 1, а с 0.
Из-за этого происходит сдвиг.
Видео инструкция
В этом видео приводится пример получения последнего элемента массива JavaScript, созданного при помощи квадратных скобок. Ввод команд осуществляется в консоль браузера Google Chrome. Результат виден сразу.