JavaScript | Отрицательный индекс элемента массива

JavaScript | Отрицательный индекс элемента массива

 

Массивы JavaScript могут иметь отрицательные индексы элементов. Например,

var massiv = []
massiv[-1] = -1
massiv[-2] = -2
massiv[-3] = -3

Мы создали пустой массив, а затем положили в него элементы с отрицательными индексами. Посмотрим как это выглядит в консоли браузера:

Массив с отрицательными индексами - JavaScript
Массив с отрицательными индексами — JavaScript

 

Проблема № 1

Первое, что бросается в глаза — это длина такого массива. Она равняется нулю — 0. Это значит, что мы не сможем завязать такой массив на алгоритме, который должен учитывать длину. Тогда зачем он нужен?

 

Проблема № 2

В таких массива будут некорректно работать методы объектов-прототипов. Например есть массив:

[100, 200, 300, -1: -1, -2: -2, -3: -3]

Если мы пройдёмся по нему методом map() и прибавим к каждому элементу единицу, то вот что у нас получится.

[101, 201, 301]

Вывод в консоли браузера:

Методы массивов видят только целочисленные индексы - JavaScript
Методы массивов видят только целочисленные индексы — JavaScript

Для массивов с отрицательными индексами нужно писать свои методы.

 

Проблема № 3

Попытка приведения такого массива к строке JSON вернёт нам пустой массив. То есть в момень преобразования в строку потеряются данные об отрицательных индексах.

JSON.stringify(massiv)
"[]"

JSON.parse(JSON.stringify(massiv))
[]
JSON создаёт пустой массив - JavaScript
JSON создаёт пустой массив — JavaScript

 

Информационные ссылки

JavaScript | Массивы (Array)