HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Массив - это самая распространенная структура данных во всех языках программирования. В этом уроке мы узнаем, что такое массив и объект, а также подробно разберем встроенные методы для работы с массивами в JavaScript.</p>
1 <p>Массив - это самая распространенная структура данных во всех языках программирования. В этом уроке мы узнаем, что такое массив и объект, а также подробно разберем встроенные методы для работы с массивами в JavaScript.</p>
2 <h2>Что такое массив</h2>
2 <h2>Что такое массив</h2>
3 <p><strong>Массив</strong>- это структура данных, которая содержит упорядоченный набор элементов и предоставляет произвольный доступ к своим элементам.</p>
3 <p><strong>Массив</strong>- это структура данных, которая содержит упорядоченный набор элементов и предоставляет произвольный доступ к своим элементам.</p>
4 <p>Рассмотрим пример массива:</p>
4 <p>Рассмотрим пример массива:</p>
5 <p>У нас есть массив a, и у него длина n. Он проиндексирован - каждое его значение хранится под определенным номером. Они идут по порядку и начинаются с нуля. Первый индекс всегда нуль - это стандарт.</p>
5 <p>У нас есть массив a, и у него длина n. Он проиндексирован - каждое его значение хранится под определенным номером. Они идут по порядку и начинаются с нуля. Первый индекс всегда нуль - это стандарт.</p>
6 <p>Последний индекс будет n-1, так как индексация начинается с нуля, поэтому последний индекс на единицу меньше количества элементов.</p>
6 <p>Последний индекс будет n-1, так как индексация начинается с нуля, поэтому последний индекс на единицу меньше количества элементов.</p>
7 <p>Чтобы обратиться к элементам, нужно указать его имя и в квадратных скобках - индекс.</p>
7 <p>Чтобы обратиться к элементам, нужно указать его имя и в квадратных скобках - индекс.</p>
8 <p>На изображении видно, что элементы идут подряд - это верное представление с точки зрения работы с массивом, но его реализация может отличаться. То, как физически массив хранится в памяти, зависит от языка программирования, там порядок набора элементов может быть другой. Но эти детали скрыты от разработчика, поэтому мы всегда представляем массив в виде элементов, которые идут друг за другом.</p>
8 <p>На изображении видно, что элементы идут подряд - это верное представление с точки зрения работы с массивом, но его реализация может отличаться. То, как физически массив хранится в памяти, зависит от языка программирования, там порядок набора элементов может быть другой. Но эти детали скрыты от разработчика, поэтому мы всегда представляем массив в виде элементов, которые идут друг за другом.</p>
9 <h2>Определение массива в JavaScript</h2>
9 <h2>Определение массива в JavaScript</h2>
10 <p>В JavaScript пустой массив создается с помощью квадратных скобок:</p>
10 <p>В JavaScript пустой массив создается с помощью квадратных скобок:</p>
11 <p>Если массив инициализируется какими-то значениями, то их нужно указать в квадратных скобках через запятую:</p>
11 <p>Если массив инициализируется какими-то значениями, то их нужно указать в квадратных скобках через запятую:</p>
12 <p>В JavaScript и других динамических языках нет ограничений на типы этих значений. Здесь можно смешивать любые типы. При этом элементами массива могут быть сами массивы.</p>
12 <p>В JavaScript и других динамических языках нет ограничений на типы этих значений. Здесь можно смешивать любые типы. При этом элементами массива могут быть сами массивы.</p>
13 <p>Чтобы обратиться к элементу, нужно после имени массива написать квадратные скобки и индекс:</p>
13 <p>Чтобы обратиться к элементу, нужно после имени массива написать квадратные скобки и индекс:</p>
14 <p>В итоге мы получим значения, с которыми можем работать дальше.</p>
14 <p>В итоге мы получим значения, с которыми можем работать дальше.</p>
15 <p>Также мы можем запросить элемент, которого нет в массиве. Например, используем индекс 4:</p>
15 <p>Также мы можем запросить элемент, которого нет в массиве. Например, используем индекс 4:</p>
16 <p>У нас нет элемента с таким индексом. В результате мы не получим ошибку. В этом случае в JavaScript мы получаем undefined.</p>
16 <p>У нас нет элемента с таким индексом. В результате мы не получим ошибку. В этом случае в JavaScript мы получаем undefined.</p>
17 <h2>Что такое объект</h2>
17 <h2>Что такое объект</h2>
18 <p>В работе с массивами в JavaScript есть особенность:</p>
18 <p>В работе с массивами в JavaScript есть особенность:</p>
19 <p>С помощью операции typeof мы смотрим, какой тип у массива. Получаем object.</p>
19 <p>С помощью операции typeof мы смотрим, какой тип у массива. Получаем object.</p>
20 <p>Дело в том, что когда мы создаем массив, то создается объект. Квадратные скобки заменяют такую конструкцию:</p>
20 <p>Дело в том, что когда мы создаем массив, то создается объект. Квадратные скобки заменяют такую конструкцию:</p>
21 <p>Фактически мы создаем новый элемент с типом array, в котором через запятую перечисляем элементы внутри него, и он является объектом.</p>
21 <p>Фактически мы создаем новый элемент с типом array, в котором через запятую перечисляем элементы внутри него, и он является объектом.</p>
22 <p>Array - это подтип объекта, который обладает определенными свойствами. Мы можем обращаться к нему, как к другим объектам. Например, array определяет свойство length, которое возвращает длину этого массива:</p>
22 <p>Array - это подтип объекта, который обладает определенными свойствами. Мы можем обращаться к нему, как к другим объектам. Например, array определяет свойство length, которое возвращает длину этого массива:</p>
23 <p>Свойство length обновляется автоматически. Например, если мы что-то добавляем или удаляем, то оно будет меняться в зависимости от того, что мы делаем.</p>
23 <p>Свойство length обновляется автоматически. Например, если мы что-то добавляем или удаляем, то оно будет меняться в зависимости от того, что мы делаем.</p>
24 <p>При этом квадратные скобки при обращении к массиву не являются специфичными для массива. В примере мы обратились к свойству через квадратные скобки arr2['length'] - это работает. Также к свойствам можно обращаться через точку arr2.length. Оба варианта делают одно и то же.</p>
24 <p>При этом квадратные скобки при обращении к массиву не являются специфичными для массива. В примере мы обратились к свойству через квадратные скобки arr2['length'] - это работает. Также к свойствам можно обращаться через точку arr2.length. Оба варианта делают одно и то же.</p>
25 <p>Теперь представим, как бы мы определили массив в терминах объекта. Мы сделали объект, у которого ключи являются числовыми - как индексы:</p>
25 <p>Теперь представим, как бы мы определили массив в терминах объекта. Мы сделали объект, у которого ключи являются числовыми - как индексы:</p>
26 <p>Этот объект по своему виду соответствует массиву, который разобрали выше. Используются те же значения.</p>
26 <p>Этот объект по своему виду соответствует массиву, который разобрали выше. Используются те же значения.</p>
27 <p>Если обратиться к нему также через скобки и поставить туда индекс 0, то мы получим единицу. Это работает практически как массив. Массив синтаксически ничего не добавляет кроме конструкции [], которая заменяет new Array(). Все остальное - это часть типа данных object в JavaScript. Из-за того, что они смешиваются в одну сущность, это добавляет некоторые неожиданные эффекты, с которыми мы познакомимся позже.</p>
27 <p>Если обратиться к нему также через скобки и поставить туда индекс 0, то мы получим единицу. Это работает практически как массив. Массив синтаксически ничего не добавляет кроме конструкции [], которая заменяет new Array(). Все остальное - это часть типа данных object в JavaScript. Из-за того, что они смешиваются в одну сущность, это добавляет некоторые неожиданные эффекты, с которыми мы познакомимся позже.</p>
28 <p>В большинстве языков программирования массивы так не пересекаются с объектами, так как являются разными типами данных. Например, в PHP вообще нет массивов, а есть только объекты или так называемые ассоциативные массивы, с которыми мы тоже познакомимся попозже.</p>
28 <p>В большинстве языков программирования массивы так не пересекаются с объектами, так как являются разными типами данных. Например, в PHP вообще нет массивов, а есть только объекты или так называемые ассоциативные массивы, с которыми мы тоже познакомимся попозже.</p>
29 <h2>Что можно делать с массивом</h2>
29 <h2>Что можно делать с массивом</h2>
30 <p>Рассмотрим манипуляции, которые можно делать с массивом в JavaScript:</p>
30 <p>Рассмотрим манипуляции, которые можно делать с массивом в JavaScript:</p>
31 <ul><li>Обновление</li>
31 <ul><li>Обновление</li>
32 <li>Произвольное добавление</li>
32 <li>Произвольное добавление</li>
33 <li>Последовательное добавление</li>
33 <li>Последовательное добавление</li>
34 <li>Удаление</li>
34 <li>Удаление</li>
35 <li>Добавление и удаление элементов в начале или конце массива</li>
35 <li>Добавление и удаление элементов в начале или конце массива</li>
36 <li>Итерация</li>
36 <li>Итерация</li>
37 <li>Функции высшего порядка</li>
37 <li>Функции высшего порядка</li>
38 <li>Другие функции</li>
38 <li>Другие функции</li>
39 </ul><p>Разберем каждый метод подробнее.</p>
39 </ul><p>Разберем каждый метод подробнее.</p>
40 <h3>Обновление</h3>
40 <h3>Обновление</h3>
41 <p>Мы можем переустановить значение любого элемента в массиве. Для этого обращаемся к соответствующему индексу и приравниваем его:</p>
41 <p>Мы можем переустановить значение любого элемента в массиве. Для этого обращаемся к соответствующему индексу и приравниваем его:</p>
42 <p>Синтаксис такой же, как и с константами переменными. Мы просто присваиваем новое значение в индекс массива arr[0] = 'hello'. Если мы потом выведем его, то увидим новое значение hello. При этом длина массива не изменилась, так как мы просто заменили значение под индексом 0.</p>
42 <p>Синтаксис такой же, как и с константами переменными. Мы просто присваиваем новое значение в индекс массива arr[0] = 'hello'. Если мы потом выведем его, то увидим новое значение hello. При этом длина массива не изменилась, так как мы просто заменили значение под индексом 0.</p>
43 <p>В данном примере используется const, а не let. Мы сохраняем в константе массив, и константа не меняется. Мы всегда работаем через константу с одним и тем же массивом.</p>
43 <p>В данном примере используется const, а не let. Мы сохраняем в константе массив, и константа не меняется. Мы всегда работаем через константу с одним и тем же массивом.</p>
44 <p>При этом JavaScript не гарантирует, что сам массив не будет меняться. Мы можем изменить его добавлением, удалением или заменой каких-то элементов. Но сам массив остается тот же. Поэтому, если у нас не происходит замены всего массива на новый, то нужно всегда использовать const. Это применимо и к другим типам данных.</p>
44 <p>При этом JavaScript не гарантирует, что сам массив не будет меняться. Мы можем изменить его добавлением, удалением или заменой каких-то элементов. Но сам массив остается тот же. Поэтому, если у нас не происходит замены всего массива на новый, то нужно всегда использовать const. Это применимо и к другим типам данных.</p>
45 <p>Напомним, что const пишется один раз при создании массива.</p>
45 <p>Напомним, что const пишется один раз при создании массива.</p>
46 <h3>Произвольное добавление</h3>
46 <h3>Произвольное добавление</h3>
47 <p>Также мы можем делать произвольное добавление. Нам необязательно добавлять значение в тот индекс, который уже существует. Например:</p>
47 <p>Также мы можем делать произвольное добавление. Нам необязательно добавлять значение в тот индекс, который уже существует. Например:</p>
48 <p>Здесь мы добавляем значение не в последний индекс. Сейчас их у нас три, а мы добавляем значение world в индекс 5.</p>
48 <p>Здесь мы добавляем значение не в последний индекс. Сейчас их у нас три, а мы добавляем значение world в индекс 5.</p>
49 <p>В этом случае мы не получим ошибку. Если распечатать массив, то можно увидеть следующее:</p>
49 <p>В этом случае мы не получим ошибку. Если распечатать массив, то можно увидеть следующее:</p>
50 <p>Если мы выведем длину массива, то она будет равна 6:</p>
50 <p>Если мы выведем длину массива, то она будет равна 6:</p>
51 <p>Получается, что пустые места - это реальные элементы - чем-то заполнились. Если мы попытаемся вывести на экран значение под индексом 4, то получим undefined:</p>
51 <p>Получается, что пустые места - это реальные элементы - чем-то заполнились. Если мы попытаемся вывести на экран значение под индексом 4, то получим undefined:</p>
52 <p>Сам элемент существует, но его значение равно undefined. Если мы обращаемся к индексу, которого не существует, то тоже получаем undefined.</p>
52 <p>Сам элемент существует, но его значение равно undefined. Если мы обращаемся к индексу, которого не существует, то тоже получаем undefined.</p>
53 <p>Получается, что в одном случае индекс с элементом есть, а в другом случае индекса нет. Но мы в любом случае получаем undefined.</p>
53 <p>Получается, что в одном случае индекс с элементом есть, а в другом случае индекса нет. Но мы в любом случае получаем undefined.</p>
54 <p>Иногда разница в этих значениях есть, и ее нужно учитывать. А иногда ее нет. Главное помнить, что undefined не всегда означает, что этого индекса не существует. Там действительно может лежать значение undefined.</p>
54 <p>Иногда разница в этих значениях есть, и ее нужно учитывать. А иногда ее нет. Главное помнить, что undefined не всегда означает, что этого индекса не существует. Там действительно может лежать значение undefined.</p>
55 <h3>Последовательное добавление</h3>
55 <h3>Последовательное добавление</h3>
56 <p>Чтобы добавить что-то в массив, используют метод push:</p>
56 <p>Чтобы добавить что-то в массив, используют метод push:</p>
57 <p>push берет последний индекс, прибавляет к нему единицу и размещает по этому индексу то значение, которое мы передаем в push.</p>
57 <p>push берет последний индекс, прибавляет к нему единицу и размещает по этому индексу то значение, которое мы передаем в push.</p>
58 <p>Если распечатать его, то мы получим 10:</p>
58 <p>Если распечатать его, то мы получим 10:</p>
59 <p>Это стандартный подход при работе с массивом.</p>
59 <p>Это стандартный подход при работе с массивом.</p>
60 <h3>Удаление</h3>
60 <h3>Удаление</h3>
61 <p>При работе с массивами есть механизм удаления элемента, но он работает не так, как ожидается:</p>
61 <p>При работе с массивами есть механизм удаления элемента, но он работает не так, как ожидается:</p>
62 <p>Вместо удаления элемента происходит его очистка, а значением элемента становится undefined.</p>
62 <p>Вместо удаления элемента происходит его очистка, а значением элемента становится undefined.</p>
63 <p>Если распечатать, то увидим пропущенное значение:</p>
63 <p>Если распечатать, то увидим пропущенное значение:</p>
64 <p>Удалять что-то из массива - это плохая практика, которая может приводить к проблемам. О них мы поговорим позже. Поэтому так не стоит делать.</p>
64 <p>Удалять что-то из массива - это плохая практика, которая может приводить к проблемам. О них мы поговорим позже. Поэтому так не стоит делать.</p>
65 <p>Если вам нужно получить массив, в котором отсутствуют какие-то элементы, то нужно применять фильтрацию. По факту нужно сформировать новый массив и добавить в него только те элементы из оригинального массива, которые нам нужны.</p>
65 <p>Если вам нужно получить массив, в котором отсутствуют какие-то элементы, то нужно применять фильтрацию. По факту нужно сформировать новый массив и добавить в него только те элементы из оригинального массива, которые нам нужны.</p>
66 <h3>Добавление и удаление элементов в начало или конец массива</h3>
66 <h3>Добавление и удаление элементов в начало или конец массива</h3>
67 <p>Чтобы добавить или удалить элементы в начало или конец массива, используются методы shift, unshift, pop и push. Эта группа методов позволяет работать с массивом как с<a>очередью</a>- метод доступа FIFO, или<a>стеком</a>- метод доступа LIFO. Рассмотрим это на примере:</p>
67 <p>Чтобы добавить или удалить элементы в начало или конец массива, используются методы shift, unshift, pop и push. Эта группа методов позволяет работать с массивом как с<a>очередью</a>- метод доступа FIFO, или<a>стеком</a>- метод доступа LIFO. Рассмотрим это на примере:</p>
68 <p>Очередь является упорядоченным набором данных, организованным по принципу FIFO - first in - first out. То есть элементы всегда добавляются в конец очереди, а удаляются из ее начала:</p>
68 <p>Очередь является упорядоченным набором данных, организованным по принципу FIFO - first in - first out. То есть элементы всегда добавляются в конец очереди, а удаляются из ее начала:</p>
69 <p>Стек является упорядоченным набором данных, организованным по принципу LIFO - last in - first out. То есть элементы добавляются и удаляются всегда из конца такой коллекции:</p>
69 <p>Стек является упорядоченным набором данных, организованным по принципу LIFO - last in - first out. То есть элементы добавляются и удаляются всегда из конца такой коллекции:</p>
70 <h3>Итерация</h3>
70 <h3>Итерация</h3>
71 <p>Классический способ итерации для императивных языков - это цикл. В JavaScript много циклов, для работы с массивами часто применяется for…of:</p>
71 <p>Классический способ итерации для императивных языков - это цикл. В JavaScript много циклов, для работы с массивами часто применяется for…of:</p>
72 <h3>Функции высшего порядка</h3>
72 <h3>Функции высшего порядка</h3>
73 <p>Канонический способ работы с коллекциями в JavaScript - функции высшего порядка.</p>
73 <p>Канонический способ работы с коллекциями в JavaScript - функции высшего порядка.</p>
74 <p>Представим, что у нас есть массив numbers:</p>
74 <p>Представим, что у нас есть массив numbers:</p>
75 <p>Мы хотим выполнить с ним стандартные операции: map, filter, reduce и reduceRight:</p>
75 <p>Мы хотим выполнить с ним стандартные операции: map, filter, reduce и reduceRight:</p>
76 <p>Пример работы с map:</p>
76 <p>Пример работы с map:</p>
77 <p>То же самое:</p>
77 <p>То же самое:</p>
78 <p>В JavaScript все функции являются объектами первого рода, и мы можем их передавать как аргументы. Во втором примере мы вызываем метод map на массиве numbers и передаем туда саму функцию Math.sqrt(), так как она принимает тот же параметр, что и наша функция-обертка.</p>
78 <p>В JavaScript все функции являются объектами первого рода, и мы можем их передавать как аргументы. Во втором примере мы вызываем метод map на массиве numbers и передаем туда саму функцию Math.sqrt(), так как она принимает тот же параметр, что и наша функция-обертка.</p>
79 <p>В итоге получаются корни - roots. Если их распечатать, у нас появляется 1, 2, 3.</p>
79 <p>В итоге получаются корни - roots. Если их распечатать, у нас появляется 1, 2, 3.</p>
80 <p>Следующий пример - это фильтрация:</p>
80 <p>Следующий пример - это фильтрация:</p>
81 <p>Если мы распечатаем получившийся массив, то получим 4,9, так как у нас единица меньше 3, она сюда не попадает.</p>
81 <p>Если мы распечатаем получившийся массив, то получим 4,9, так как у нас единица меньше 3, она сюда не попадает.</p>
82 <p>Наиболее комплексный пример из функций высшего порядка - это reduce:</p>
82 <p>Наиболее комплексный пример из функций высшего порядка - это reduce:</p>
83 <p>В итоге возвращаем тело функции в преобразованный новый аккумулятор и считаем сумму элементов массива. Если его распечатать, то получаем 14.</p>
83 <p>В итоге возвращаем тело функции в преобразованный новый аккумулятор и считаем сумму элементов массива. Если его распечатать, то получаем 14.</p>
84 <p>У анонимной функции достаточно много параметров. В JavaScript это сделано для удобства. Чаще всего используются только первые два параметра. Список параметров:</p>
84 <p>У анонимной функции достаточно много параметров. В JavaScript это сделано для удобства. Чаще всего используются только первые два параметра. Список параметров:</p>
85 <ul><li>acc - аккумулятор</li>
85 <ul><li>acc - аккумулятор</li>
86 <li>value - значение текущего, которое обрабатывается</li>
86 <li>value - значение текущего, которое обрабатывается</li>
87 <li>index - индекс, что может быть полезно в определенных случаях</li>
87 <li>index - индекс, что может быть полезно в определенных случаях</li>
88 <li>arr - сам массив</li>
88 <li>arr - сам массив</li>
89 </ul><p>Пример работы с reduceRight:</p>
89 </ul><p>Пример работы с reduceRight:</p>
90 <h3>Другие функции</h3>
90 <h3>Другие функции</h3>
91 <p>Чтобы строки превратить в массив, а также сделать обратное, используют split и join:</p>
91 <p>Чтобы строки превратить в массив, а также сделать обратное, используют split и join:</p>
92 <p>Поиск в массиве и проверка соблюдения условий элементами массива производится с помощью find, findIndex, indexOf, lastIndexOf, some, every, includes и так далее. Например:</p>
92 <p>Поиск в массиве и проверка соблюдения условий элементами массива производится с помощью find, findIndex, indexOf, lastIndexOf, some, every, includes и так далее. Например:</p>
93 <p>Сортировка массива происходит с помощью sort, reverse.</p>
93 <p>Сортировка массива происходит с помощью sort, reverse.</p>
94 <p>Разберем еще один метод flat(). Он делает содержимое вложенных элементов-массивов исходного массива элементами самого исходного массива. Он словно выравнивает массив. Посмотрим на код:</p>
94 <p>Разберем еще один метод flat(). Он делает содержимое вложенных элементов-массивов исходного массива элементами самого исходного массива. Он словно выравнивает массив. Посмотрим на код:</p>
95 <p>Как видно из предыдущего примера, нам удалось выровнять все элементы на один уровень ниже лежащих массивов. При этом элементы более глубоко лежащих массивов остались невыровненными.</p>
95 <p>Как видно из предыдущего примера, нам удалось выровнять все элементы на один уровень ниже лежащих массивов. При этом элементы более глубоко лежащих массивов остались невыровненными.</p>
96 <p>Можно управлять уровнем глубины выравнивания, который указывается в параметре метода:</p>
96 <p>Можно управлять уровнем глубины выравнивания, который указывается в параметре метода:</p>
97 <h2>Библиотека lodash</h2>
97 <h2>Библиотека lodash</h2>
98 <p>Существуют библиотеки, которые позволяют пользоваться множеством готовых функций. Одной из наиболее актуальных на текущей момент Javascript-библиотек является lodash. В ней реализованы различные функции по работе с массивами, коллекциями, строками и другими объектами языка.</p>
98 <p>Существуют библиотеки, которые позволяют пользоваться множеством готовых функций. Одной из наиболее актуальных на текущей момент Javascript-библиотек является lodash. В ней реализованы различные функции по работе с массивами, коллекциями, строками и другими объектами языка.</p>
99 <p>Эта библиотека предоставляет большое количество функций высшего порядка, которые поддерживают функциональный стиль программирования. Подробнее ознакомиться со всеми возможностями lodash можно на<a>сайте библиотеки</a>.</p>
99 <p>Эта библиотека предоставляет большое количество функций высшего порядка, которые поддерживают функциональный стиль программирования. Подробнее ознакомиться со всеми возможностями lodash можно на<a>сайте библиотеки</a>.</p>
100 <h2>Изменяемость VS Неизменяемость</h2>
100 <h2>Изменяемость VS Неизменяемость</h2>
101 <p>Изменить объект в императивном стиле, когда можно писать код в неизменяемом - часто является не самым удачным решением. Это ведет к изменению состояния программы и усложняет ее. Поэтому, когда изучаете методы, всегда обращайте внимание, изменяют ли они исходный массив или нет.</p>
101 <p>Изменить объект в императивном стиле, когда можно писать код в неизменяемом - часто является не самым удачным решением. Это ведет к изменению состояния программы и усложняет ее. Поэтому, когда изучаете методы, всегда обращайте внимание, изменяют ли они исходный массив или нет.</p>
102 <p>Например, большинство примененных к массиву функций высшего порядка результатом возвращают новый массив. При этом они оставляют исходный нетронутым. Метод sort, как сказано в<a>документации</a>, необратимым образом модифицирует исходный массив. Поэтому такую сортировку лучше сделать на копии массива, если нам не нужно, чтобы исходный массив менялся.</p>
102 <p>Например, большинство примененных к массиву функций высшего порядка результатом возвращают новый массив. При этом они оставляют исходный нетронутым. Метод sort, как сказано в<a>документации</a>, необратимым образом модифицирует исходный массив. Поэтому такую сортировку лучше сделать на копии массива, если нам не нужно, чтобы исходный массив менялся.</p>
103 <p>Возьмем для примера типичную ситуацию, когда необходимо добавить новый элемент в массив. Рассмотрим, как справиться с этой задачей на примeре изменяющего метода push и неизменяющего concat:</p>
103 <p>Возьмем для примера типичную ситуацию, когда необходимо добавить новый элемент в массив. Рассмотрим, как справиться с этой задачей на примeре изменяющего метода push и неизменяющего concat:</p>
104 <p><strong>push</strong></p>
104 <p><strong>push</strong></p>
105 <p>push добавляет один или более элементов в конец массива, тем самым изменяет его, и возвращает новую длину массива.</p>
105 <p>push добавляет один или более элементов в конец массива, тем самым изменяет его, и возвращает новую длину массива.</p>
106 <p><strong>concat</strong></p>
106 <p><strong>concat</strong></p>
107 <p>concat возвращает новый массив, который содержит элементы исходного массива и элементы, переданные в качестве аргументов.</p>
107 <p>concat возвращает новый массив, который содержит элементы исходного массива и элементы, переданные в качестве аргументов.</p>
108 <h2>Выводы</h2>
108 <h2>Выводы</h2>
109 <p>В этом уроке мы узнали, что такое массив. Это структура данных, которая содержит упорядоченный набор элементов и предоставляет произвольный доступ к своим элементам. Также мы рассмотрели манипуляции, которые можно делать с массивом в JavaScript. К ним относятся:</p>
109 <p>В этом уроке мы узнали, что такое массив. Это структура данных, которая содержит упорядоченный набор элементов и предоставляет произвольный доступ к своим элементам. Также мы рассмотрели манипуляции, которые можно делать с массивом в JavaScript. К ним относятся:</p>
110 <ul><li>Обновление</li>
110 <ul><li>Обновление</li>
111 <li>Произвольное добавление</li>
111 <li>Произвольное добавление</li>
112 <li>Последовательное добавление</li>
112 <li>Последовательное добавление</li>
113 <li>Удаление</li>
113 <li>Удаление</li>
114 <li>Добавление и удаление элементов в начале или конце массива</li>
114 <li>Добавление и удаление элементов в начале или конце массива</li>
115 <li>Итерация</li>
115 <li>Итерация</li>
116 <li>Функции высшего порядка</li>
116 <li>Функции высшего порядка</li>
117 <li>Другие функции</li>
117 <li>Другие функции</li>
118 </ul>
118 </ul>