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()
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() возвращает число, его нельзя напрямую использовать для цепочки методов массива.
// Неправильно:
// [1, 2].push(3).map(x => x * 2); // ОшибкаЭмуляция стека
Метод push() часто используется вместе с pop() для реализации структуры данных «стек».
const stack = [];
stack.push('задача1');
stack.push('задача2');
console.log(stack.pop()); // 'задача2'
console.log(stack); // ['задача1']задача2 ['задача1']
Работа с объектами, похожими на массивы
С помощью call() или apply() можно использовать push() на объектах, имеющих свойство length.
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}Объединение с оператором расширения для клонирования и добавления
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 нет прямого аналога. Добавление в массив требует ручного управления памятью и индексами.