Почему Array.length возвращает число, превышающее фактический максимальный индекс массива? Разве JavaScript не начинает считать с 0? - PullRequest
0 голосов
/ 01 мая 2019

Свойство length объекта, являющегося экземпляром типа Array, устанавливает или возвращает количество элементов в этом массиве. Значение представляет собой 32-разрядное целое число без знака, которое всегда численно больше самого высокого индекса в массиве.

let array = [1, 2, 3];
console.log(array.length);

Выход = 3

Ответы [ 2 ]

5 голосов
/ 01 мая 2019

Первый элемент имеет индекс 0. Длина - это количество элементов. Подсчет и показатели не связаны. Если бы индексы начинались с 99, но было только четыре элемента, длина не была бы 103, это было бы 4. Аналогично, первый индекс был -66, и было только 6 элементов, список не был бы длиной -60 элементов.

Я согласен, это может сбить с толку. Может быть, думать о показателях как имена *. Таким образом, каждое место в массиве имеет имя. Для нашего удобства имена связаны с позицией в массиве каждого элемента.

Позиции начинают отсчитываться с 0, а количество элементов начинается с 1, как говорит Мари в своем комментарии.


* На самом деле в javascript они являются именами, так как все индексы также являются свойствами.

1 голос
/ 01 мая 2019

В оригинале OP указано, что следующий код возвратил 4, когда фактическое значение равно 3.

let array = [1, 2, 3];
console.log(array.length);

Проблема в том, что вы запутались между свойством .length, которое дает вамколичество элементов в массиве и индекс элементов.

Последний индекс массива - 2, поскольку индекс начинается с 0 ... однако длина останется как 3

...