Массивы.Способы создания массива. Управление массивами. Методы.
Массивы
Объекты позволяют хранить данные со строковыми ключами. Но довольно часто мы понимаем, что нам необходима упорядоченная коллекция данных, в которой присутствуют 1-й, 2-й, 3-й элементы и т.д. Например, она понадобится нам для хранения списка чего-либо: пользователей, товаров, элементов HTML и т.д.
В этом случае использовать объект неудобно, так как он не предоставляет методов управления порядком элементов. Мы не можем вставить новое свойство «между» уже существующими. Объекты просто не предназначены для этих целей.
Массив представляет собой набор элементов, доступ к которым осуществляется по индексу. Создается массив с помощью оператора new и конструктора массива - функции Array.
Предположим, что требуется создать массив имен пользователей. Это можно сделать так:
var users = new Array("Artem", "Irina", "Sergey", "Boris");
Это выражение создает массив из 4 элементов (пользователей). Все элементы массива, пронумерованы, начиная с нуля. Для получения значения элемента массива необходимо задать имя массива и в квадратных скобках порядковый номер элемента (его индекс). Так, для получения доступа к первому элементу нашего массива, можно написать так:
В этом случае мы указываем, что создаваемая переменная users будет массивом, размер которого будет определяться автоматически по мере появления элементов.
Чтобы определить длину массива (т.е. сколько элементов в нем находится) используется свойство length. Например, получить доступ к последнему элементу массива (если мы не знаем, сколько в нем элементов) можно следующим образом:
Т.е. сначала определяется длина массива (users.length), затем, помня о том, что нумерация элементов начинается с нуля, из длины вычитается 1 и полученное значение используется в качестве индекса массива.
Многомерные массивы
Массивы могут содержать элементы, которые тоже являются массивами. Это можно использовать для создания многомерных массивов, например, для хранения матриц:
toString
Массивы по-своему реализуют метод toString, который возвращает список элементов, разделённых запятыми.
Не сравнивайте массивы при помощи ==. В JavaScript, в отличие от некоторых других языков программирования, массивы не следует сравнивать при помощи оператора ==.
У этого оператора нет специального подхода к массивам, он работает с ними, как и с любыми другими объектами.
Давайте ещё раз напомним правила:
- Два объекта равны друг другу == только в том случае, если они ссылаются на один и тот же объект.
- Если один из аргументов == является объектом, а другой – примитивом, то объект преобразуется в примитив, как описано в главе Преобразование объектов в примитивы.
- …За исключением null и undefined, которые равны == друг другу и ничему больше.
Оператор строгого равенства === ещё проще, так как он не преобразует типы.
Итак, если мы всё же сравниваем массивы с помощью ==, то они никогда не будут одинаковыми, если только мы не сравним две переменные, которые ссылаются на один и тот же массив
Например:
Здесь, в обоих случаях, мы сравниваем примитив с объектом массива. Таким образом, массив [] преобразуется в примитив с целью сравнения и становится пустой строкой ''.
Затем продолжается процесс сравнения с примитивами:
Рассмотрим пример: предположим, мы хотим, чтобы при загрузке страницы пользователь видел какой сегодня день недели.
Код html-страницы будет следующим:
Итого
Массив – это особый тип объекта, предназначенный для работы с упорядоченным набором элементов.
Объявление:
// квадратные скобки (обычно)
let arr = [item1, item2...];
// new Array (очень редко)
let arr = new Array(item1, item2...);
Вызов new Array(number) создаёт массив с заданной длиной, но без элементов.
Свойство length отражает длину массива или, если точнее, его последний цифровой индекс плюс один. Длина корректируется автоматически методами массива.
Если мы уменьшаем length вручную, массив укорачивается.
Получение элементов:
Мы можем получить элемент по его индексу, например arr[0].
Также мы можем использовать метод at(i) для получения элементов с отрицательным индексом, для отрицательных значений i, он отступает от конца массива. В остальном он работает так же, как arr[i], если i >= 0.
Мы можем использовать массив как двустороннюю очередь, используя следующие операции:
push(...items)добавляет items в конец массива.
pop() удаляет элемент в конце массива и возвращает его.
shift() удаляет элемент в начале массива и возвращает его.
unshift(...items) добавляет items в начало массива.
Чтобы пройтись по элементам массива:
for (let i=0; i<arr.length; i++) – работает быстрее всего, совместим со старыми браузерами.
for (let item of arr) – современный синтаксис только для значений элементов (к индексам нет доступа).
for (let i in arr) – никогда не используйте для массивов!