Давайте начнем с изучения того, что такое массивы:

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

В заключение, что говорит нам Википедия, массив представляет собой набор элементов, в нашем случае любых элементов от примитивных значений до функций и объектов (поскольку массивы JavaScript могут содержать любые данные), к которым можно получить доступ по его индексу, также индекс массива начинается с нуля .

Теперь, когда мы знаем, что такое массив, давайте узнаем о его наиболее часто используемых методах:

Если вы хотите использовать Array.length для перебора элементов в массиве, вам нужно помнить, что длина — это один элемент перед последним индексом массива. Это связано с тем, что индексация массива идет от 0 (ноль), а его длина отсчитывается от 1 (единицы);

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

Чтобы получить индекс элемента массива, мы можем использовать Array.indexOf(), этот метод вернет индекс элемента, и после этого мы сможем получить к нему доступ следующим образом: array[index] ;

Лучшей практикой будет создание копии массива с помощью Array.slice() или использование свойства оператора распространения перед изменением, так как массивы передаются по ссылке, а не по значению. Это означает, что когда вы передаете массив в функцию, он получает ссылку на исходный массив, и если вы его мутируете, исходный массив будет изменен, что может привести к ошибкам и ошибкам в вашем коде. Имейте в виду, что копирование будет неглубоким, и если в исходном массиве есть вложенные массивы или объекты, вам потребуется создать глубокую копию с помощью метода JSON.stringify(JSON.parse()) или используйте structuredClone().

Чтобы соединить два массива, мы можем использовать Array.concat(), который принимает два массива и возвращает новый массив с обоими массивами, объединенными в один, или мы можем использовать оператор расширения, такой как […arr1, …arr2], но это считается плохой производительностью, и я настоятельно рекомендую вам использовать Array.concat(), если вы хотите соединить два массива.

Если мы хотим создать массив из других типов данных, таких как строки, мы можем использовать Array.split() и предоставить параметр, по которому строка будет разделена на элементы нового массива, после чего мы можем использовать Array.join() и снова укажите строковый параметр, который будет использоваться для объединения всех элементов массива в новую строку, мы также можем создать массив, вызвав Array.from():

мы можем изменить массив с помощью методов shift, unshift, push, pop.

Методы shift и unshift обходятся дороже, чем методы push и pop. Чтобы понять это, давайте посмотрим, как система обрабатывает массивы внутри:

Когда мы создаем массив, система выделяет для него память, и когда мы отталкиваемэлементы в конец массива после того, как он достигает предела памяти, выделенного системой, он делает две вещи: сначала он выделяет больше памяти для массива, а затем копирует старый массив в новый блок памяти.

Но когда мы используем метод unshift, мы добавляем его в начало массива, но у нас уже есть элемент с индексом 0, поэтому, когда мы добавляем или удаляем начало массива, нам нужно повторно индексировать каждый элемент в массиве, это становится дороже по мере роста длины массива.

Если мы хотим выполнить итерацию по всем элементам массива, мы можем использовать несколько опций в зависимости от наших потребностей, во-первых, это Array.forEach(), которая принимает обратный вызов в качестве аргумента и выполняет итерацию по каждому элементу в массиве и применяет обратный вызов. для каждого элемента, если мы хотим вернуть новый массив, измененный функцией обратного вызова, мы хотим использовать Array.map(), который будет перебирать каждый элемент в массиве, применяя обратный вызов к каждому элементу и возвращая новый массив, содержащий те элементы, измененные обратным вызовом. Если мы хотим агрегировать данные из массива, мы можем использовать Array.reduce(), который принимает обратный вызов и накопитель и перебирает каждый элемент в массиве, применяя обратный вызов и сохраняя результаты в накопителе, возвращает накопленные данные.

Массивы имеют линейную структуру, но мы можем объединять их в многомерные массивы, также известные как Matrix. Матрица — это массивы, помещенные в массивы, которые создают вложенные структуры. Существует также метод в массиве, который сглаживает многомерные массивы в линейные, и он называется Array.flat(), он принимает многомерный массив и переменную глубины (по умолчанию бесконечная), до которой он будет сведен, возвращает сглаженный массив.

Спасибо, что дочитали до конца, хорошего дня. Здесь вы можете узнать больше о массивах: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/ Глобальные_Объекты/Массив