Найти в Дзене
CyberHaus

Массивы в JavaScript

Объявление массива

Массивы в JavaScript можно объявить двумя способами: при помощи ключевого слова new или присвоив квадратные скобки.

объявление массива
объявление массива

При объявлении массив можно сразу же проинициализировать. Сделать это можно также двумя способами.

инициализация массива
инициализация массива

Доступ к элементам массива

Доступ к элементам массива осуществляется по индексу. Изменить значения элемента можно путем простого присваивания, а также при присваивании значения несуществующему элементу. Последний будет создан автоматически. Заметьте, что массив может содержать элементы разных типов.

доступ к элементам массива
доступ к элементам массива

Добавление и удаление элементов массива

Для добавления новых элементов в массив, а также для удаления этих элементов из массива, в объекте Array() есть специальные методы.

push() – добавляет элемент в конец массива;

pop() – удаляет последний элемент массива;

unshift() – добавляет элемент в начало массива;

shift() – удаляет первый элемент массива.

методы для добавления и удаления элементов
методы для добавления и удаления элементов

У объекта Array() есть ещё один универсальный метод splice() для удаления и изменения элементов. Данный метод умеет удалять несколько элементов по индексу, также метод может вставлять новые элементы на место уделённых.

удаление элементов начиная с индекса 8
удаление элементов начиная с индекса 8
удаляем элементы и вставляем новые на место удаленных
удаляем элементы и вставляем новые на место удаленных
удаляем элементы с 1 по 6 индекс
удаляем элементы с 1 по 6 индекс

Если указать отрицательное значение, то будет удалено указанное количество элементов с конца массива.

удаление элементов с конца массива
удаление элементов с конца массива

Создание копии массива

Можно предположить, что самый простой способ скопировать массив – это просто присвоить существующий массив новой переменной. Но это не так. Если применить простое присваивание, то при этом создастся не копия массива, а ссылка на него, поэтому все манипуляции со ссылкой отразятся и на массиве.

создаем ссылку на массив присваиванием
создаем ссылку на массив присваиванием

Как видите, при изменении массива arr2 изменения затронули и массив arr. В некоторых случаях это удобно, но всё же чаще требуется получить именно копию массива, а не ссылку на него. У объекта Array() есть метод slice(), он позволяет как скопировать массив целиком, так и его часть. Метод принимает два параметра: первый параметр указывает элемент, с которого начнется копирование массива, а второй параметр указывает, по какой элемент будет скопирован массив.

создаем копию массива методом splice
создаем копию массива методом splice

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

Объединение массивов

Для того чтобы соединить два массива в один, у объекта Array() есть метод concat(). Данный метод принимает в качестве параметра массив, с которым требуется объединение.

объединение двух массивов в один
объединение двух массивов в один

Поиск в массиве

Поиск по массиву можно осуществить при помощи методов indexOf() и lastIndexOf(). Первый метод возвращает индекс первого найденного совпадения, второй метод возвращает индекс последнего совпадения. Если совпадений не найдено, оба метода вернут -1.

поиск элементов массива
поиск элементов массива

Сортировка массива

Сортировка осуществляется при помощи метода sort().

сортировка массива
сортировка массива

Перевернуть массив

Для того чтобы расположить элементы массива в обратном порядке, надо воспользоваться методом reverse()

перевернуть массив методом reverse
перевернуть массив методом reverse

Перемешать массив

Для того чтобы перемешать массив в случайном порядке, у объекта Array() нет специального метода. Но можно это сделать при помощи метода short() объекта Math() и его метода random().

перемешать массив случайным образом
перемешать массив случайным образом

Перебор элементов массива

Перебрать элементы массива можно при помощи циклов for, for in и while

перебрать массив в цикле for
перебрать массив в цикле for
перебрать массив в цикле for in
перебрать массив в цикле for in
перебрать массив в цикле while
перебрать массив в цикле while

Но также у метода Array() есть несколько методов для перебора. Это методы:
forEach – вызывает callback – функцию для каждого элемента массива;

map – вызывает callback – функцию для каждого элемента массива;
filter – создает массив из элементов, для которых выполнилась callback – функция;
every – вызывает callback – функцию для каждого элемента, внутри которой выполняется проверка. Если проверка прошла успешно для всех элементов массива, метод вернет true, иначе – вернет false;

some – вызывает callback – функцию для каждого элемента, внутри которой выполняется проверка. Если проверка прошла успешно хотя бы для одного из элементов массива, метод вернет true, иначе – вернет false;

reduce – вызывает callback – функцию для каждого элемента, внутри которой выполняются действия с элементами. При этом сохраняется промежуточный результат;

reduceRight – то же, что и reduce, но в этом случае массив перебирается с конца;

callback – функция принимает три параметра func(value, key, array);

value – значение элемента;

key – индекс элемента;

array – массив.

У методов reduce и reduceRight callback – функция отличается тем, что имеет дополнительный параметр func(summa, value, key, array);

summa – хранит промежуточный результат;

value – значение элемента;

key – индекс элемента;

array – массив.

По мимо этого у данных методов есть возможность передать вторым параметром, после callback – функции значение, которое будет установлено в параметре summa. По умолчанию, это значение равно содержимому первого элемента массива.

перебрать массив методом forEach
перебрать массив методом forEach
перебрать массив методом map
перебрать массив методом map
перебрать массив методом filter и отобрать все числа больше нуля
перебрать массив методом filter и отобрать все числа больше нуля
перебрать массив методом every и проверить все ли числа массива меньше нуля
перебрать массив методом every и проверить все ли числа массива меньше нуля
перебрать массив методом some и проверить есть ли хоть один элемент массива меньше нуля
перебрать массив методом some и проверить есть ли хоть один элемент массива меньше нуля
перебрать массив методом reduce и подсчитать сумму символов в массиве
перебрать массив методом reduce и подсчитать сумму символов в массиве

Как видите, в данном случае в конце мы передали ноль. Поэтому при первом вызове callback – функции в параметр summa был равен нулю и у нас получился на выходе верный результат. А вот что произойдет если не указать второй параметр.

вызываем метод reduce без второго параметра
вызываем метод reduce без второго параметра

Как видите результат не верный из-за того, что в параметре summa оказалась строка, что в нашем случае не допустимо.

перебрать массив методом reduceRight и подсчитать сумму символов в массиве
перебрать массив методом reduceRight и подсчитать сумму символов в массиве

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