Push: примеры (JAVASCRIPT)

Использование функции push в JavaScript на практике
Раздел: Массивы, Стек/Очередь
push(...items: T[]): number

Описание функции push

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

Метод применяется, когда требуется динамически расширить массив новыми данными в конце последовательности.

Аргументы

Функция принимает один или более аргументов любого типа. Каждый аргумент становится новым элементом, добавляемым в конец массива.

Возвращаемое значение

Метод возвращает новую длину массива после добавления всех переданных элементов. Возвращаемое значение является целым числом (number).

Простые примеры использования

Добавление одного элемента

const fruits = ['яблоко', 'банан'];
const newLength = fruits.push('апельсин');
console.log(fruits);
console.log('Новая длина:', newLength);
['яблоко', 'банан', 'апельсин']
Новая длина: 3

Добавление нескольких элементов

const numbers = [1, 2];
const length = numbers.push(3, 4, 5);
console.log(numbers);
console.log(length);
[1, 2, 3, 4, 5]
5

Добавление элементов разных типов

const arr = [1, 'текст'];
arr.push(true, null, {name: 'объект'});
console.log(arr);
[1, 'текст', true, null, {name: 'объект'}]

Альтернативные методы в JavaScript

Метод unshift()

Добавляет элементы в начало массива, также возвращает новую длину. Изменяет исходный массив.

Оператор расширения (spread)

Создает новый массив, объединяя существующие элементы с новыми, без изменения исходного массива.

const original = [1, 2];
const newArray = [...original, 3, 4];

Метод concat()

Возвращает новый массив, состоящий из исходного и добавленных элементов или массивов. Не изменяет оригинальный массив.

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

Распространенные ошибки

Использование на не массивах

Метод push() существует только у массивов. Вызов на других типах данных приведет к ошибке.

const obj = {0: 'a', length: 1};
// obj.push('b'); // Ошибка: obj.push не является функцией

Путаница с возвращаемым значением

Метод возвращает новую длину, а не измененный массив. Это может привести к неожиданным результатам.

const arr = [1, 2];
console.log(arr.push(3)); // Выведет 3, а не [1, 2, 3]

Добавление массива как одного элемента

При передаче массива в push(), он добавляется как один элемент (вложенный массив), а не сливается.

const arr = [1, 2];
arr.push([3, 4]);
console.log(arr); // [1, 2, [3, 4]] а не [1, 2, 3, 4]

Изменения в новых версиях

Метод push() остается стабильным и не претерпел значительных изменений в последних версиях ECMAScript. Его поведение и спецификация не менялись с самых ранних стандартов.

Важным контекстом является то, что современные движки JavaScript оптимизируют производительность push() для работы с динамическими массивами.

Расширенные примеры

Добавление элементов из другого массива с помощью apply()

Пример javascript
const source = [1, 2, 3];
const target = [4, 5];
Array.prototype.push.apply(target, source);
console.log(target); // [4, 5, 1, 2, 3]
[4, 5, 1, 2, 3]

Использование в цепочке методов

Поскольку push() возвращает число, его нельзя напрямую использовать для цепочки методов массива.

Пример javascript
// Неправильно:
// [1, 2].push(3).map(x => x * 2); // Ошибка

Эмуляция стека

Метод push() часто используется вместе с pop() для реализации структуры данных «стек».

Пример javascript
const stack = [];
stack.push('задача1');
stack.push('задача2');
console.log(stack.pop()); // 'задача2'
console.log(stack); // ['задача1']
задача2
['задача1']

Работа с объектами, похожими на массивы

С помощью call() или apply() можно использовать push() на объектах, имеющих свойство length.

Пример javascript
const arrayLike = {0: 'a', 1: 'b', length: 2};
Array.prototype.push.call(arrayLike, 'c');
console.log(arrayLike);
// {0: 'a', 1: 'b', 2: 'c', length: 3}
{0: 'a', 1: 'b', 2: 'c', length: 3}

Объединение с оператором расширения для клонирования и добавления

Пример javascript
const original = [1, 2];
const newArray = [...original, 3, 4];
console.log('Оригинал:', original);
console.log('Новый массив:', newArray);
Оригинал: [1, 2]
Новый массив: [1, 2, 3, 4]

Аналоги в других языках

Python: метод append() и extend()

Метод append() добавляет один элемент в конец списка, аналогично push(). Метод extend() добавляет несколько элементов из итерируемого объекта.

fruits = ['яблоко', 'банан']
fruits.append('апельсин')
# Результат: ['яблоко', 'банан', 'апельсин']

numbers = [1, 2]
numbers.extend([3, 4])
# Результат: [1, 2, 3, 4]

PHP: функция array_push()

Работает аналогично, но является функцией, а не методом. Возвращает новое количество элементов.

$fruits = ['яблоко', 'банан'];
$newLength = array_push($fruits, 'апельсин');
// Массив $fruits: ['яблоко', 'банан', 'апельсин']

MySQL: оператор INSERT

Добавление данных в таблицу, а не в массив. Не является прямой аналогией.

Язык C

В стандартной библиотеке C нет прямого аналога. Добавление в массив требует ручного управления памятью и индексами.

JS push function comments

En
Push Adds one or more elements to the end of an array and returns the new length of the array