Добавление нескольких элементов в массив JavaScript: apply()

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

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

JS
Скопировать код
let array = [1, 2, 3];
array.push(...[4, 5, 6]); // Теперь array = [1, 2, 3, 4, 5, 6]

Либо можно объединить два массива в один с помощью метода concat, создав таким образом новую коллекцию:

JS
Скопировать код
let team = [1, 2, 3].concat([4, 5, 6]); // Теперь team = [1, 2, 3, 4, 5, 6]
Кинга Идем в IT: пошаговый план для смены профессии

Искусство использования push

Есть несколько способов расширения массива в JavaScript. Оператор расширения особенно отмечается своей простотой и эффективностью.

Работа с большими объемами данных

Справляясь с размерными массивами, вы можете использовать:

  • Циклы: они позволяют вам контролировать процесс, что ценится опытными программистами.
  • Массовое добавление элементов при помощи оператора расширения: это поможет избежать возможных ошибок переполнения стека, равнозначных глобальным кризисам.
Подробнее об этом расскажет наш спикер на видео
skypro youtube speaker

Немутирующий метод

Если важно сохранить исходный массив без изменений, следует выбирать метод concat, создающий новый массив и оставляющий структуры данных неприкосновенными.

Поддержка устаревших браузеров

Если требуется совместимость с более старыми версиями браузеров, можно использовать такие инструменты, как Babel, которые добавят поддержку новейших возможностей ES6, включая расширение массивов.

Возвращение в прошлое: использование push.apply

В эпоху ES5 использовали Array.prototype.push.apply для добавления элементов.

JS
Скопировать код
Array.prototype.push.apply(codingAvengers, aspiringAvengers);

Этот метод работает, но его основное ограничение — отсутствие интуитивной понятности, требующей явного указания контекста.

Сравнение техник

ТехникаСинтаксисКогда использовать
Оператор расширенияcodingAvengers.push(...avengersAssemble);Для краткости и современного синтаксиса
concatcodingAvengers.concat(avengersAssemble);Для создания нового массива, немутирования исходного
ЦиклыavengersAssemble.forEach(hero => codingAvengers.push(hero));При работе с большими массивами, чтобы избежать переполнения стека
push.applyArray.prototype.push.apply(codingAvengers, avengersAssemble);В тех случаях, когда необходимо поддерживать устаревший код

Визуализация

Продемонстрируем добавление элементов в массив, представив его как шампур:

Markdown
Скопировать код
Текущий шампур: 🍢[🍅]

Добавление элементов на шампур аналогично добавлению их в массив:

JS
Скопировать код
ingredients.push('🍄', '🌶️', '🥒'); // теперь это праздник вкуса!

Ваш шампур теперь выглядит так:

Markdown
Скопировать код
Шампур в конце: 🍢[🍅, 🍄, 🌶️, 🥒]

Теперь ваш код так же приятен, как и эти шашлыки!

Остерегайтесь подводных камней и следуйте лучшим практикам

Соблюдение лучших практик и грамотное преодоление сложностей обеспечат безопасное и эффективное использование массивов.

Производительность

При работе с крупными массивами применение оператора расширения может снизить производительность. Очень важно найти здесь баланс.

Избегайте мутаций

Метод push модифицирует исходный массив, в то время как concat создает новый. Остерегайтесь мутаций данных, особенно если это критично для вашего приложения.

Многофункциональность оператора расширения

Оператор расширения ... может быть использован для:

  • Копирования массивов:
JS
Скопировать код
let clone = [...array]; // создаем копию массива
  • Распространения элементов при передаче аргументов в функцию:
JS
Скопировать код
Math.max(...array); // находим максимальное значение в массиве

Читаемость кода

Код, использующий оператор расширения, удобнее читать и понимать. Это важно при командной работе над проектом. Меньшая когнитивная нагрузка – лучшее понимание кода.

Полезные материалы

  1. Метод Array.prototype.push() на MDN — детальное описание метода .push().
  2. Оператор расширения (...) на MDN — обзор оператора расширения.
  3. Метод Array.prototype.concat() на MDN — адекватное использование .concat().
  4. Учебник по методу Array push() на w3schools — показывает детали метода .push().
  5. Новые возможности ECMAScript 6: Обзор и сравнение — особенности работы с массивами в ES6.
  6. Метод Function.prototype.apply() на MDN — использование apply() в связке с push.
  7. Методы массива на javascript.info — подробно об методах массивов.
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Какой метод создаёт новый массив и оставляет исходный массив без изменений?
1 / 5