Массивы не только в 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 в одном месте, что должно помочь вам в лучшем их понимании.
Спасибо за внимание!
Когда вы ставите перед собой цели, очень важно быть максимально конкретным. Здесь не поможет простая…
Современный человек думает, что теряет время, когда не действует быстро, однако не знает, что делать…
Уникальная элегантность и долговечность: почему стоит купить травертин и купить гранит в Барекс Мармур…
В современном мире, где каждый день от нас требуют быть в ресурсе, отвечать внешним ожиданиям…
Существует множество способов защитить свои данные в Интернете. Одним из лучших решений можно назвать виртуальную…
Реалии настоящего таковы, что все труднее становится оставаться приватным при просмотре веб-страниц, и это еще…