В этой главе мы рассмотрим массивы JavaScript.
В JavaScript вы можете использовать массивы для хранения нескольких значений в одной переменной.
Массив можно описать как уникальную переменную, способную одновременно хранить более одного значения.
Существуют два синтаксиса для создания пустого массива:
let arr = new Array();
let arr = [];
Второй синтаксис используется большую часть времени. Вы можете добавить начальные элементы в скобки, например:
Вы также можете заменить элемент следующим образом:
Либо вы можете добавить новый элемент в массив, например:
Длина массива length - это общее количество элементов. Вот пример:
Если вы собираетесь показать весь массив, вы можете использовать console.log, например:
Массив может хранить элементы любых типов:
Массивы можно рассматривать как особый вид объектов. Одним из наиболее заметных сходств является то, что массивы могут заканчиваться запятой.
Например:
let books = [
"Html",
"Css",
"Javascript",
];
Методы
Одним из наиболее распространенных применений массивов является очередь. в информатике это известно как упорядоченное собрание элементов, поддерживающее следующие две операции:
push - используется для добавления элемента в конец
shift - используется для извлечения элемента с начала, продвигая очередь. В результате второй элемент становится первым.
Массивы поддерживают обе вышеупомянутые операции, и это широко практикуется разработчиками.
Вы можете использовать массивы для другой практики. Это структура данных, называемая стек, которая поддерживает две операции:
push - она направлена на добавление элемента в конец.
pop - она направлена на извлечение элемента с конца.
В javascript массивы работают как очередь и как стек. С помощью массивов вы можете добавлять или удалять элементы с начала или с конца.
Методы, работающие с концом массива
pop
Этот метод используется для извлечения и возврата последнего элемента массива. Например:
push
Вы можете использовать этот метод для добавления элемента в конец массива, например:
Вызовы books.push(...) и books[books.length] = ... равнозначны.
Методы, работающие с началом массива
shift
Этот метод предназначен для извлечения и возврата первого элемента массива.
Например:
unshift
Это используется для добавления элемента в начало массива, как следует:
С помощью методов push и unshift вы можете одновременно добавить разные элементы.
Давайте посмотрим на этот пример:
Внутренности
Как мы упоминали выше, массивы - это особый тип объектов. Квадратные скобки используются для доступа к свойству arr[0], исходящему из синтаксиса объекта. Одно делает массив еще более особенным. Это их внутреннее представление. Движок стремится хранить его элементы последовательно в смежной области памяти. Но, обратите внимание, что они нарушатся, если вы перестанете работать с массивом в данном порядке и обращаться к нему как к обычному объекту.
Например, технически возможно поступить так:
let books = []; // make an array
books[99999] = 5; // assign a property with the index far greater than its length
books.name = "Javascript"; // create a property with an arbitrary name
Это возможно, потому что массивы - это объекты. У вас есть возможность добавлять свойства к ним.
Вы также должны знать случаи неправильного использования массива, чтобы избежать их. Вот несколько примеров:
- Добавление свойства нечислового типа, например arr.test = 9.
- Создание дыр, например, добавьте arr[0], а затем arr[500], не вставляя ничего между ними.
- Заполнение массива в обратном порядке. Например, arr[500], arr[499].
Мы можем предположить, что нужно рассматривать массивы как уникальные структуры, работая с ними с упорядоченными данными.
Циклы
Один из общих способов перебора элементов массива - это цикл for по индексам.
Вот пример:
Другой вид цикла - for..of.
Пример выглядит так:
В этой форме цикла нет доступа к номеру текущего элемента.
Поскольку массивы являются объектами, вы технически также можете использовать for..in:
В любом случае, это не очень хорошая идея, так как это может вызвать потенциальные проблемы, такие как:
- Цикл for..in может итерировать все свойства, а не только числовые свойства.
- Цикл for..in оптимизирован для общих объектов, а не массивов. Вот почему он до 10-100 раз медленнее.
Длина
Всякий раз, когда мы изменяем массив, свойство length автоматически обновляется. Это не количество значений в массиве, а числовой индекс + 1. Например, одному элементу с большим индексом будет соответствовать большая длина, например:
Тем не менее, разработчики не используют массивы таким образом.
Свойство length доступно для записи. Когда вы его уменьшаете, массив усекается. Давайте посмотрим на этот пример:
Вы можете легко очистить массив, используя arr.length = 0;.
Создание нового массива
Здесь другой синтаксис для создания массива:
let arr = new Array("Html", "Css", "etc");
В любом случае, этот синтаксис редко используется.
В случае, если new Array вызывается только с одним аргументом, который является числом. Затем он создает массив без элементов, но с определенной длиной:
В упомянутом выше коде все элементы равны undefined .
Многомерные массивы
Массивы могут иметь элементы, которые также являются массивами. Это можно использовать для многомерных массивов для хранения матриц:
Метод toString
Массивы реализуют метод toString своим собственным способом. Он возвращает список элементов, разделенных запятыми. Вот пример:
Существует и альтернативный вариант:
Но у них нет Symbol.toPrimitive и valueOf. Массивы реализуют только преобразование toString. Таким образом, здесь [] преобразуется в "1" и [2,1] становится "2,1".
Если бинарный плюс "+" оператор что-то добавляет к строке, он переключает его на строку, поэтому следующий шаг выглядит так:
Время Викторины: Проверьте Свои Навыки!
отовы проверить свои знания? Погрузитесь в наши интерактивные викторины для более глубокого понимания и веселого способа закрепить знания.