Массивы не только в JavaScript являются фундаментальной структурой данных, но и практически во всех языках программирования. Они позволяют разработчикам сохранять и эффективно управлять несколькими значениями в одной переменной. Массивы — это универсальная вещь, с которой можно делать много разных манипуляций над разными данными.
Массив в JavaScript – это объект, который хранит несколько значений под общим названием, грубо говоря – под одной переменной. Эти значения могут быть разных типов данных, а каждый элемент в массиве имеет числовой индекс, начиная с 0 (для самого первого элемента).
Чтобы создать массив в JavaScript, вы можете воспользоваться несколькими способами:
[]). Это самый распространенный и простой методnew Array()Array.from()Array.of()
let frukti = ["Апельсин", "Банан", "Яблоко"]; // литеральная нотация массива
let frukti = new Array("Апельсин", "Банан", "Яблоко"); // конструктор массива
const moyArr = Array.from("АБВГД"); // массив из строки; результат - А,Б,В,Г,Д
let frukti = Array.of("Апельсин", "Банан", "Яблоко"); // массив из произвольных аргументов; результат — Апельсин, Банан, Яблоко
Длина массива — это важнейшее свойство массива. Получить его значение можно за счет свойства length. Оно определяет количество элементов в массиве:
let frukti = ["Апельсин", "Банан", "Яблоко"]; console.log(frukti.length); // 3
Динамический размер — массивы JavaScript имеют динамический размер, то есть они могут увеличиваться или уменьшаться во время выполнения. Это делает их особенно гибкими по сравнению с массивами в других языках программирования.
Доступ к элементам массива — осуществляется через их индекс в квадратных скобках:
let frukti = ["Апельсин", "Банан", "Яблоко"]; console.log(frukti[0]); // Апельсин console.log(frukti[2]); // Яблоко
В JavaScript доступны различные методы, позволяющие эффективно работать/обрабатывать массивы. К числу важнейших можно отнести следующие:
push() и pop()push(): добавляет один или несколько элементов в конец массиваpop(): удаляет последний элемент из массива и возвращает егоconst chisla = [1, 2, 3]; chisla.push(4); console.log(chisla); // [1, 2, 3, 4] const posledneyeChislo = chisla.pop(); console.log(posledneyeChislo); // 4 console.log(chisla); // [1, 2, 3]
unshift() и shift()unshift(): добавляет один или несколько элементов в начало массиваshift(): удаляет первый элемент из массива и возвращает егоlet frukti = ["Банан", "Яблоко"];
frukti.unshift("Апельсин");
console.log(frukti); // ["Апельсин", "Банан", "Яблоко"]
const perviyFrukt = frukti.shift();
console.log(perviyFrukt); // "Апельсин"
console.log(frukti); // ["Банан", "Яблоко"]
splice()Этот метод более универсален, чем предыдущие рассмотренные, и он может добавлять/удалять элементы в любой позиции массива.
let frukti = ["Апельсин", "Банан", "Яблоко"]; frukti.splice(1, 2, "Вишня", "Клубника"); // замена элементов с индексом 1 и 2 console.log(frukti); // ["Апельсин", "Вишня", "Клубника"]
slice()Данный метод создает новый объект массива из поверхностной копии части массива. Если указано 2 аргумента, то метод возвращает копию (без изменения начального массива) части массива от индекса первого элемента к индексу заключительного элемента (не включается в новый массив).
let frukti = ["Банан", "Апельсин", "Лимон", "Мандарин", "Вишня", "Яблоко"]; let citrus = frukti.slice(1, 4); console.log(citrus); // ["Апельсин", "Лимон", "Мандарин"]
map()Метод map() создает новый массив с результатами после обработки указанной функцией каждого элемента исходного массива.
const chisla = [1, 2, 3, 4]; const squared = chisla.map(num => num * num); console.log(squared); // [1, 4, 9, 16]
filter()Этот метод создает новый массив со всеми элементами, прошедшими указанной функцией проверку.
const chisla = [1, 2, 3, 4, 5, 6]; const evenNumbers = chisla.filter(num => num % 2 === 0); // только четные числа console.log(evenNumbers); // [2, 4, 6]
reduce()Данный метод выполняет функцию для каждого элемента массива, чтобы вернуть единственное исходное значение (свести к одному результату).
const chisla = [1, 2, 3, 4]; const sum = chisla.reduce((acc, curr) => acc + curr, 0); // сумма всех элементов массива console.log(sum); // 10
forEach()С помощью этого метода можно выполнить определенную функцию один раз для каждого элемента в массиве.
let frukti = ["Апельсин", "Банан", "Яблоко"]; frukti.forEach(frukti => console.log(frukti)); // Апельсин // Банан // Яблоко
Язык программирования JavaScript также поддерживает многомерные массивы, которые можно представить в качестве массивов в массивах.
const matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]; console.log(matrix[1][1]); // 5
indexOf() и lastIndexOf()Эти методы ищут элемент в массиве и возвращают его индекс.
let frukti = ["Апельсин", "Банан", "Мандарин", "Яблоко"];
console.log(frukti.indexOf("Мандарин")); // 2
console.log(frukti.lastIndexOf("Банан")); // 1
find() и findIndex()Эти методы ищут элементы, удовлетворяющие определенному условию, переданному в callback функции.
const chisla = [1, 2, 3, 4, 5]; const found = chisla.find(num => num > 3); console.log(found); // возвращает первое значение; результат - 4 const foundIndex = chisla.findIndex(num => num > 3); console.log(foundIndex); // возвращает индекс первого значения; результат - 3
Метод sort() — сортирует элементы массива и возвращает отсортированный массив, в порядке кодовых точек Unicode (по умолчанию).
let frukti = ["Банан", "Апельсин", "Яблоко", "Мандарин"]; frukti.sort(); console.log(frukti); // ["Апельсин", "Банан", "Мандарин", "Яблоко"]
Метод reverse() – изменяет порядок элементов в массиве: первый элемент массива становится последним, а последний первым.
const chisla = [1, 2, 3, 4, 5]; chisla.reverse(); console.log(chisla); // [5, 4, 3, 2, 1]
Оператор распространения (...) является полезным дополнением к массивам JavaScript. Это позволяет «распаковать» массив на его отдельные элементы.
const arr1 = [1, 2, 3]; const arr2 = [4, 5, 6]; const combinedArr = [...arr1, ...arr2]; console.log(combinedArr); // [1, 2, 3, 4, 5, 6]
Деструктуризация позволяет извлекать значения из массивов и назначать их переменным.
const [perviy, vtoroy, ...drugiye] = [1, 2, 3, 4, 5]; console.log(perviy); // 1 console.log(vtoroy); // 2 console.log(drugiye); // [3, 4, 5]
В JavaScript также существуют массивообразные объекты, которые обладают некоторыми свойствами массивов, но не поддерживают все методы массива. Примером этого может служить объект arguments в функции.
function exampleFunction() {
console.log(arguments.length);
console.log(Array.from(arguments));
}
exampleFunction(1, 2, 3);
// 3
// [1, 2, 3]
Работая с большими массивами, разработчикам следует помнить о производительности. Такие методы, как forEach(), map(), filter() и reduce() при очень больших массивах могут вызвать проблемы с производительностью. В таких случаях лучше использовать традиционные циклы for или for ... of, которые будут более эффективными.
Работая с массивами в JavaScript, следуйте следующим лучшим практикам:
[]), чтобы создать массивmap(), filter() и reduce() позволяет организовать более четкую и лаконичную структуру кода (но избегайте их для очень больших массивов)delete для удаления элементов из массива, поскольку это оставляет «дыры» в массиве. Вместо этого используйте такие методы, как splice() или filter()typeof, воспользуйтесь конструкцией метода Array.isArray()
Массивы относятся к фундаментальным основам любого языка программирования, и JavaScript и здесь не остается в стороне. Ведь с помощью массивов и широкого спектра возможностей можно эффективно управлять и манипулировать данными. От таких простых операций, как добавление или удаление элементов, до сложных обработок функциональными методами, массивы способны обеспечить необходимую гибкость и производительность в современной веб-разработке.
Каждый разработчик JavaScript должен понимать и эффективно использовать массивы в своей работе. Целью сегодняшнего урока является подборка основных моментов при работе с массивами в JS в одном месте, что должно помочь вам в лучшем их понимании.
Спасибо за внимание!
В нашем путешествии по миру сокетов мы начали с "верхнего этажа" — WebSocket в браузере,…
В предыдущей статье мы говорили о WebSockets — технологии, позволяющей создавать интерактивные чаты в браузере.…
Кожа младенца – тонкая и нежная. Еще не справляется с защитой организма от внешних факторов.…
Представьте себе телефонный разговор. Вы звоните другу, он поднимает трубку, и вы можете говорить одновременно,…
Долгое время планшеты воспринимались исключительно как устройства для потребления контента: посмотреть YouTube, полистать ленту новостей…
Вы внесли правки в CSS, исправили критический баг в JavaScript, загрузили файлы на сервер и…