Объявление массива
Массивы в JavaScript можно объявить двумя способами: при помощи ключевого слова new или присвоив квадратные скобки.
При объявлении массив можно сразу же проинициализировать. Сделать это можно также двумя способами.
Доступ к элементам массива
Доступ к элементам массива осуществляется по индексу. Изменить значения элемента можно путем простого присваивания, а также при присваивании значения несуществующему элементу. Последний будет создан автоматически. Заметьте, что массив может содержать элементы разных типов.
Добавление и удаление элементов массива
Для добавления новых элементов в массив, а также для удаления этих элементов из массива, в объекте Array() есть специальные методы.
push() – добавляет элемент в конец массива;
pop() – удаляет последний элемент массива;
unshift() – добавляет элемент в начало массива;
shift() – удаляет первый элемент массива.
У объекта Array() есть ещё один универсальный метод splice() для удаления и изменения элементов. Данный метод умеет удалять несколько элементов по индексу, также метод может вставлять новые элементы на место уделённых.
Если указать отрицательное значение, то будет удалено указанное количество элементов с конца массива.
Создание копии массива
Можно предположить, что самый простой способ скопировать массив – это просто присвоить существующий массив новой переменной. Но это не так. Если применить простое присваивание, то при этом создастся не копия массива, а ссылка на него, поэтому все манипуляции со ссылкой отразятся и на массиве.
Как видите, при изменении массива arr2 изменения затронули и массив arr. В некоторых случаях это удобно, но всё же чаще требуется получить именно копию массива, а не ссылку на него. У объекта Array() есть метод slice(), он позволяет как скопировать массив целиком, так и его часть. Метод принимает два параметра: первый параметр указывает элемент, с которого начнется копирование массива, а второй параметр указывает, по какой элемент будет скопирован массив.
В примере для получения крайнего элемента копируемого массива мы воспользовались свойством length. Это свойство содержит в себе количество элементов в массиве.
Объединение массивов
Для того чтобы соединить два массива в один, у объекта Array() есть метод concat(). Данный метод принимает в качестве параметра массив, с которым требуется объединение.
Поиск в массиве
Поиск по массиву можно осуществить при помощи методов indexOf() и lastIndexOf(). Первый метод возвращает индекс первого найденного совпадения, второй метод возвращает индекс последнего совпадения. Если совпадений не найдено, оба метода вернут -1.
Сортировка массива
Сортировка осуществляется при помощи метода sort().
Перевернуть массив
Для того чтобы расположить элементы массива в обратном порядке, надо воспользоваться методом reverse()
Перемешать массив
Для того чтобы перемешать массив в случайном порядке, у объекта Array() нет специального метода. Но можно это сделать при помощи метода short() объекта Math() и его метода random().
Перебор элементов массива
Перебрать элементы массива можно при помощи циклов for, for in и 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. По умолчанию, это значение равно содержимому первого элемента массива.
Как видите, в данном случае в конце мы передали ноль. Поэтому при первом вызове callback – функции в параметр summa был равен нулю и у нас получился на выходе верный результат. А вот что произойдет если не указать второй параметр.
Как видите результат не верный из-за того, что в параметре summa оказалась строка, что в нашем случае не допустимо.
Метод reduceRight выдал нам тот же результат. Просто массив перебирался с конца, а не с начала как в первом случае.