Как веб-разработчик, вы знаете, насколько важны массивы в JavaScript. Они являются одной из наиболее часто используемых структур данных для хранения и обработки данных. Массивы обеспечивают удобный способ группировки похожих данных, упрощая работу с большими наборами данных. В этой статье мы подробно рассмотрим массивы в JavaScript, охватив все, что вам нужно знать, чтобы стать мастером массивов.

Что такое массив в JavaScript?

Проще говоря, массив JavaScript — это набор значений, которые можно хранить в одной переменной. Эти значения могут относиться к любому типу данных, включая строки, числа, объекты и даже другие массивы. Структура данных массива предназначена для того, чтобы разработчики могли хранить и получать доступ к нескольким значениям с помощью одной переменной, что делает работу с данными намного более эффективной и простой.

Объявление и инициализация массивов в JavaScript:

В JavaScript массивы могут быть объявлены и инициализированы с помощью буквальной нотации массива или функции-конструктора Array.

Буквенное обозначение массива:

Нотация массива literal — наиболее распространенный способ создания массивов в JavaScript. Он использует квадратные скобки для заключения списка значений, разделенных запятыми.

let myArray = [1, 2, 3, 4, 5];

Это создает новый массив с пятью элементами, которые содержат значения 1, 2, 3, 4 и 5.

Функция конструктора массива:

Другой способ создать массив — использовать функцию Array() конструктора, которая может принимать один или несколько аргументов, представляющих начальные значения массива. Например:

let myArray = new Array(1, 2, 3, 4, 5);

Это создает новый массив с теми же значениями, что и в предыдущем примере.

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

После создания массива вы можете получить доступ к его элементам и изменить их, используя его индекс. В JavaScript массивы индексов начинаются с 0, что означает, что первый элемент имеет индекс 0, второй элемент имеет индекс 1, и так далее.

Чтобы получить доступ к элементу массива, вы можете использовать квадратную скобку нотацию, за которой следует индекс элемента, к которому вы хотите получить доступ. Например:

let myArray = [1, 2, 3, 4, 5]; 
let thirdElement = myArray[2]; // Returns 3

Этот код создает массив из пяти элементов, а затем обращается к третьему элементу (имеющему индекс 2) и сохраняет его значение в переменной thirdElement.

Изменение элементов массива:

В JavaScript массивы являются изменяемыми, что означает, что вы можете изменять значения их элементов после их создания. Чтобы изменить элемент в массиве, вы можете использовать те же обозначения с квадратными скобками, за которыми следует индекс элемента, который вы хотите изменить. Например:

let myArray = [1, 2, 3, 4, 5]; 
myArray[2] = 6; // Changes the value of the third element to 6

Этот код создает массив из пяти элементов, а затем изменяет значение третьего элемента (имеющего индекс 2) на 6.

Методы массива в JavaScript:

JavaScript предоставляет несколько встроенных методов для работы с массивами. Эти методы упрощают работу с массивами, поиск и сортировку. Вот некоторые из наиболее часто используемых методов:

push() Метод:

Метод push() добавляет один или несколько элементов в конец массива.

let myArray = [1, 2, 3]; 
myArray.push(4, 5); 
console.log(myArray); // Output: [1, 2, 3, 4, 5]

Метод pop() удаляет последний элемент из массива и возвращает его значение.

let myArray = [1, 2, 3, 4, 5]; 
myArray.pop(); 
console.log(myArray); // Output: [1, 2, 3, 4]

shift() Метод:

Метод shift() удаляет первый элемент из массива и возвращает этот элемент. Этот метод изменяет массив, для которого он вызывается, и изменяет свойство длины массива. Оставшиеся элементы в массиве сдвигаются вниз, чтобы заменить удаленный элемент, поэтому все их индексы уменьшаются на единицу.

Вот пример, демонстрирующий работу метода shift():

let myArray = ['apple', 'banana', 'cherry']; 
let firstElement = myArray.shift(); 
console.log(firstElement); // Output: "apple" 
console.log(myArray); // Output: ["banana", "cherry"]

В этом примере мы определяем массив с именем myArray с тремя элементами: «яблоко», «банан» и «вишня». Затем мы вызываем метод shift() для этого массива и присваиваем возвращаемое значение (то есть «яблоко») переменной с именем firstElement. Наконец, мы регистрируем firstElement и myArray в консоли, чтобы увидеть результаты.

Стоит отметить, что если при вызове shift() массив пуст, он возвращает значение undefined, и массив остается неизменным. Вот пример:

let emptyArray = []; 
let removedElement = emptyArray.shift(); 
console.log(removedElement); // Output: undefined 
console.log(emptyArray); // Output: []

В этом примере мы определяем пустой массив с именем emptyArray. Затем мы вызываем метод shift() для этого массива и присваиваем возвращаемое значение (которое не определено) переменной с именем removedElement. Наконец, мы записываем removedElement и emptyArray в консоль, чтобы увидеть результаты.

Как и ожидалось, метод shift() возвращает неопределенное значение, поскольку из пустого массива нет элементов, которые можно было бы удалить. Массив остается неизменным, его длина равна 0.

Теперь, когда мы рассмотрели метод shift(), давайте перейдем к методу unshift() в следующем разделе.

unshift() метод:

Метод unshift() противоположен методу shift(). Он добавляет один или несколько элементов в начало массива и возвращает новую длину массива. Этот метод изменяет массив, для которого он вызывается, и увеличивает свойство длины массива.

Вот пример, демонстрирующий, как работает метод unshift():

let myArray = ['banana', 'cherry']; 
let newLength = myArray.unshift('apple'); 
console.log(newLength); // Output: 3 
console.log(myArray); // Output: ["apple", "banana", "cherry"]

Как и ожидалось, метод unshift() добавляет слово «яблоко» к началу myArray, поэтому в результате получается myArray ['яблоко', 'банан', 'вишня']. Длина массива также увеличена до 3.

Стоит отметить, что вы можете передать несколько аргументов методу unshift(), чтобы добавить более одного элемента в начало массива. Вот пример:

let myArray = ['banana', 'cherry']; 
let newLength = myArray.unshift('apple', 'orange'); 
console.log(newLength); // Output: 4 
console.log(myArray); // Output: ["apple", "orange", "banana", "cherry"]

В этом примере мы вызываем метод unshift() для myArray и передаем два дополнительных аргумента («яблоко» и «апельсин»). Метод добавляет оба значения в начало массива, поэтому в результате получается myArray ['яблоко', 'апельсин', 'банан', 'вишня']. Длина массива увеличена до 4.

Теперь, когда мы рассмотрели методы shift() и unshift(), давайте перейдем к методу concat() в следующем разделе.

concat() метод:

Метод concat() используется для объединения двух или более массивов и возврата нового массива, содержащего все элементы исходных массивов. Исходные массивы не изменяются. Этот метод может принимать любое количество аргументов, и каждый аргумент может быть массивом или значением.

Вот пример, демонстрирующий, как работает метод concat():

let array1 = [1, 2, 3]; 
let array2 = [4, 5, 6]; 
let array3 = array1.concat(array2); 
console.log(array3); // Output: [1, 2, 3, 4, 5, 6]

В этом примере мы определяем два массива, array1 и array2, со значениями [1, 2, 3] и [4, 5, 6] соответственно. Затем мы вызываем метод concat() для array1 и передаем array2 в качестве аргумента. Метод возвращает новый массив, содержащий все элементы из обоих массивов, и мы сохраняем этот новый массив в переменной с именем array3. Наконец, мы вводим array3 в консоль, чтобы увидеть результаты.

Стоит отметить, что вы можете передать несколько аргументов в метод concat(), чтобы объединить более двух массивов. Вот пример:

let array1 = [1, 2, 3]; 
let array2 = [4, 5, 6]; 
let array3 = [7, 8, 9]; 
let array4 = array1.concat(array2, array3); 
console.log(array4); // Output: [1, 2, 3, 4, 5, 6, 7, 8, 9]

В этом примере мы определяем три массива array1, array2 и array3 со значениями [1, 2, 3], [4, 5, 6] и [7, 8, 9] соответственно. Затем мы вызываем метод concat() для array1 и передаем array2 и array3 в качестве дополнительных аргументов. Метод возвращает новый массив, содержащий все элементы из всех трех массивов, и мы сохраняем этот новый массив в переменной с именем array4. Наконец, мы вводим array4 в консоль, чтобы увидеть результаты.

Как и ожидалось, метод concat() возвращает новый массив, содержащий все элементы из всех трех массивов. В результате получается array4 [1, 2, 3, 4, 5, 6, 7, 8, 9].

Теперь, когда мы рассмотрели метод concat(), давайте перейдем к методу slice() в следующем разделе.

slice() метод:

Метод slice() используется для извлечения раздела массива и возврата нового массива с извлеченными элементами. Этот метод не изменяет исходный массив. Метод slice() принимает два аргумента: начальный индекс и конечный индекс извлекаемого раздела. Начальный индекс является инклюзивным, а конечный — исключающим. Если конечный индекс не указан, метод slice() извлекает все элементы от начального индекса до конца массива.

Вот пример, демонстрирующий, как работает метод slice():

let array1 = [1, 2, 3, 4, 5]; 
let array2 = array1.slice(2, 4); 
console.log(array2); // Output: [3, 4]

В этом примере мы определяем массив с именем array1 со значениями [1, 2, 3, 4, 5]. Затем мы вызываем метод slice() для array1 и передаем начальный индекс 2 и конечный индекс 4. Метод возвращает новый массив, который содержит элементы от 2-го индекса (который равен 3) до, но не включая, 4-й индекс (который равен 4). Мы сохраняем этот новый массив в переменной с именем array2. Наконец, мы вводим array2 в консоль, чтобы увидеть результаты.

Как и ожидалось, метод slice() возвращает новый массив, содержащий элементы [3, 4]. Исходный array1 не изменен.

Стоит отметить, что если вы не укажете конечный индекс, метод slice() извлечет все элементы из начального индекса в конец массива. Вот пример:

let array1 = [1, 2, 3, 4, 5]; 
let array2 = array1.slice(2); 
console.log(array2); // Output: [3, 4, 5]

Как и ожидалось, метод slice() возвращает новый массив, содержащий элементы [3, 4, 5]. Оригинальный array1 не изменен.

подробнее о методе slice() нажмите здесь.

Теперь, когда мы рассмотрели метод slice(), давайте перейдем к методу splice() в следующем разделе.

splice() метод:

Метод splice() используется для добавления или удаления элементов из массива. Этот метод изменяет исходный массив. Метод splice() принимает три аргумента: начальный индекс, количество удаляемых элементов (если есть) и добавляемые элементы (если есть).

Вот пример, демонстрирующий, как работает метод splice():

let array1 = [1, 2, 3, 4, 5]; 
array1.splice(2, 1, 6, 7); 
console.log(array1); // Output: [1, 2, 6, 7, 4, 5]

В этом примере мы определяем массив с именем array1 со значениями [1, 2, 3, 4, 5]. Затем мы вызываем метод splice() для array1 и передаем начальный индекс 2, количество удаляемых элементов (в данном случае 1) и добавляемых элементов (в данном случае 6 и 7). Метод удаляет один элемент, начиная со 2-го индекса (который равен 3), и добавляет на их место элементы 6 и 7. В результате array1 изменяется на [1, 2, 6, 7, 4, 5]. Мы регистрируем array1 в консоли, чтобы увидеть результаты.

Стоит отметить, что вы также можете использовать метод splice() для удаления элементов без добавления новых. Для этого вы просто передаете начальный индекс и количество удаляемых элементов. Вот пример:

let array1 = [1, 2, 3, 4, 5]; 
array1.splice(2, 2); 
console.log(array1); // Output: [1, 2, 5]

Теперь, когда мы рассмотрели метод splice(), давайте перейдем к методу forEach() в следующем разделе.

forEach() метод:

Метод forEach() используется для перебора массива и выполнения некоторого действия над каждым элементом массива. Метод forEach() принимает функцию обратного вызова в качестве аргумента, которая вызывается для каждого элемента массива. Функция обратного вызова принимает три аргумента: текущий элемент, индекс текущего элемента и сам массив.

Вот пример, демонстрирующий, как работает метод forEach():

let array1 = [1, 2, 3, 4, 5]; 
array1.forEach(function(element) { console.log(element); });

Вы также можете использовать аргументы индекса и массива в функции обратного вызова, если вам нужно получить к ним доступ. Вот пример:

let array1 = [1, 2, 3, 4, 5]; 
array1.forEach(function(element, index, array) { 
console.log("Element " + element + " at index " + index + " in array " + array);
 });

В этом примере мы вызываем метод forEach() для array1 и передаем функцию обратного вызова, которая записывает каждый элемент, его индекс и весь массив в консоль. Функция обратного вызова принимает три аргумента: текущий элемент, его индекс и сам массив. В результате мы видим следующий вывод:

Element 1 at index 0 in array 1,2,3,4,5 
Element 2 at index 1 in array 1,2,3,4,5 
Element 3 at index 2 in array 1,2,3,4,5 
Element 4 at index 3 in array 1,2,3,4,5 
Element 5 at index 4 in array 1,2,3,4,5

Теперь, когда мы рассмотрели метод forEach(), давайте перейдем к методу map() в следующем разделе.

Метод map() используется для создания нового массива с результатами вызова предоставленной функции для каждого элемента исходного массива. Метод map() не изменяет исходный массив.

Вот пример использования метода map() для создания нового массива с квадратом каждого числа в исходном массиве:

const numbers = [1, 2, 3, 4, 5]; 
const squaredNumbers = numbers.map(function(number) { 
return number * number; 
}); 
console.log(squaredNumbers); // Output: [1, 4, 9, 16, 25]

В этом примере мы определяем массив с именем numbers со значениями [1, 2, 3, 4, 5]. Затем мы вызываем метод map() для numbers и передаем функцию обратного вызова, которая возводит в квадрат каждое число в массиве. Метод map() создает новый массив с именем squaredNumbers с квадратами значений исходного массива. Наконец, мы записываем массив squaredNumbers в консоль.

Вы также можете использовать синтаксис стрелочной функции с методом map() для более лаконичного кода:

const numbers = [1, 2, 3, 4, 5]; 
const squaredNumbers = numbers.map(number => number * number); 
console.log(squaredNumbers); // Output: [1, 4, 9, 16, 25]

Вы также можете использовать аргументы индекса и массива в функции обратного вызова, если вам нужно получить к ним доступ. Вот пример:

const numbers = [1, 2, 3, 4, 5]; 
const multipliedNumbers = numbers.map(function(number, index, array) { 
return number * index * array.length; 
}); 
console.log(multipliedNumbers); // Output: [0, 2, 9, 32, 75]

В этом примере мы определяем массив с именем numbers со значениями [1, 2, 3, 4, 5]. Затем мы вызываем метод map() для numbers и передаем функцию обратного вызова, которая умножает каждое число в массиве на его индекс и длину массива. Метод map() создает новый массив с именем multipliedNumbers с умноженными значениями исходного массива. Наконец, мы записываем массив multipliedNumbers в консоль.

Теперь, когда мы рассмотрели метод map(), давайте перейдем к методу filter() в следующем разделе.

filter() метод:

Вот синтаксис метода filter():

array.filter(callback(element[, index[, array]])[, thisArg])

Функция callback может принимать до трех аргументов:

  • element: текущий обрабатываемый элемент массива.
  • index (необязательно): индекс текущего обрабатываемого элемента в массиве.
  • array (необязательно): массив, к которому был вызван метод filter().

Параметр thisArg также является необязательным. Он указывает значение this при выполнении функции обратного вызова.

Давайте посмотрим на пример. Предположим, у нас есть массив чисел, и мы хотим создать новый массив, содержащий только четные числа.

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; 
const evenNumbers = numbers.filter(function(num) { 
return num % 2 === 0;
 }); 
console.log(evenNumbers); // [2, 4, 6, 8, 10]

В этом примере мы сначала объявляем массив чисел. Затем мы вызываем метод filter() для массива и передаем функцию обратного вызова в качестве аргумента. Функция обратного вызова принимает один аргумент num, который представляет текущий обрабатываемый элемент в массиве. Функция возвращает true, если num % 2 равно 0, что означает, что num — четное число. Затем метод filter() создает новый массив, содержащий только четные числа.

Метод filter() — мощный инструмент для работы с массивами в JavaScript. Он позволяет легко создавать новые массивы на основе конкретных условий, что может быть чрезвычайно полезно в самых разных ситуациях.

reduce() метод:

Метод reduce() используется для уменьшения массива до одного значения путем выполнения предоставленной функции для каждого элемента массива. Предоставленная функция принимает четыре аргумента: аккумулятор, текущее значение, текущий индекс и исходный массив. Вот пример:

const numbers = [1, 2, 3, 4, 5]; 
const sum = numbers.reduce((acc, curr) => acc + curr); 
console.log(sum); // 15

В этом примере метод reduce() используется для вычисления суммы всех элементов массива numbers.

find() метод:

Метод find() используется для возврата первого элемента в массиве, который удовлетворяет предоставленной функции тестирования. Функция тестирования принимает три аргумента: текущее значение, текущий индекс и исходный массив. Вот пример:

const numbers = [1, 2, 3, 4, 5]; 
const evenNumber = numbers.find((num) => num % 2 === 0); 
console.log(evenNumber); // 2

В этом примере метод find() используется для поиска первого четного числа в массиве numbers.

indexOf() метод:

Метод indexOf() используется для поиска индекса первого вхождения заданного элемента в массив. Вот пример:

const fruits = ['apple', 'banana', 'orange']; 
const bananaIndex = fruits.indexOf('banana'); 
console.log(bananaIndex); // 1

В этом примере метод indexOf() используется для поиска индекса первого вхождения строки «банан» в массиве fruits.

some() метод:

Метод some() используется для проверки того, проходит ли хотя бы один элемент в массиве предусмотренную функцию тестирования. Функция тестирования принимает три аргумента: текущее значение, текущий индекс и исходный массив. Вот пример:

const numbers = [1, 2, 3, 4, 5]; 
const hasEvenNumber = numbers.some((num) => num % 2 === 0); 
console.log(hasEvenNumber); // true

В этом примере метод some() используется для проверки того, содержит ли массив numbers хотя бы одно четное число.

includes() метод:

Метод include() проверяет, содержит ли массив определенный элемент, и возвращает логическое значение. Он принимает один аргумент, который представляет собой элемент для поиска в массиве. Вот пример:

const arr = [1, 2, 3, 4]; 
console.log(arr.includes(3)); // Output: true 
console.log(arr.includes(5)); // Output: false

every() метод:

Метод Every() проверяет, все ли элементы в массиве проходят тест, реализованный предоставленной функцией. Он возвращает логическое значение. Вот пример:

const arr = [1, 2, 3, 4]; 
const allGreaterThanZero = arr.every(element => element > 0); 
console.log(allGreaterThanZero); // Output: true

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

Заключение:

В заключение, массивы JavaScript являются важной структурой данных, используемой во многих приложениях, и понимание их методов имеет решающее значение для эффективной работы с ними. Мы обсудили некоторые из наиболее часто используемых методов в массивах JavaScript, включая push(), pop(), shift(), unshift(), concat(), slice(), splice(), forEach(), map(), filter(), а также несколько методов, используемых для проверки наличия в массиве определенного значения, например как includes(), indexOf(), find(), some() и every(). Каждый из этих методов служит определенной цели и может использоваться для различных операций с массивами. Понимая эти методы, вы сможете писать более эффективный и читаемый код при работе с массивами в JavaScript.

Первоначально опубликовано на https://codewithnazam.com 22 февраля 2023 г.