← Назад к вопросам

Что возвращает метод Push?

1.6 Junior🔥 161 комментариев
#JavaScript Core

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI2 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что возвращает метод Push в JavaScript

push() — это встроенный метод массива в JavaScript, который добавляет один или несколько элементов в конец массива и возвращает новую длину массива.

Синтаксис и возвращаемое значение

const arr = [1, 2, 3];
const newLength = arr.push(4);

console.log(newLength); // 4 — это новая длина массива
console.log(arr); // [1, 2, 3, 4] — массив изменился

Важно: push() возвращает число (новую длину), а не массив.

Детальный пример

const numbers = [10, 20];

// push() возвращает новую длину
const length1 = numbers.push(30);
console.log(length1); // 3
console.log(numbers); // [10, 20, 30]

// Можно добавить сразу несколько элементов
const length2 = numbers.push(40, 50, 60);
console.log(length2); // 6
console.log(numbers); // [10, 20, 30, 40, 50, 60]

// push() с переменной
const element = 70;
const length3 = numbers.push(element);
console.log(length3); // 7

Важные характеристики

1. Мутирует исходный массив

В отличие от других методов, push() изменяет исходный массив:

const arr = [1, 2];
arr.push(3); // Массив изменится
console.log(arr); // [1, 2, 3]

2. Работает с разными типами данных

const mixed = [];
mixed.push(42); // число
mixed.push("text"); // строка
mixed.push({id: 1}); // объект
mixed.push([1, 2, 3]); // массив
mixed.push(null); // null
mixed.push(undefined); // undefined

console.log(mixed);
// [42, "text", {id: 1}, [1, 2, 3], null, undefined]

3. Работает со строками (но результат может быть неожиданным)

const arr = ["a", "b"];
arr.push("c", "d");
console.log(arr); // ["a", "b", "c", "d"]
console.log(arr.length); // 4

4. Использование с контекстом (this)

const obj = {
  items: [1, 2],
  add: function(item) {
    return this.items.push(item); // Возвращает новую длину
  }
};

const length = obj.add(3);
console.log(length); // 3
console.log(obj.items); // [1, 2, 3]

Частые ошибки

Ошибка 1: Присваивание результата push() вместо самого массива

// Неправильно
const arr = [1, 2].push(3);
console.log(arr); // 3 — это число, не массив!

// Правильно
const arr = [1, 2];
arr.push(3);
console.log(arr); // [1, 2, 3]

Ошибка 2: Забывчивость о мутировании

const original = [1, 2];
const copy = original; // Не копирует, только ссылка
copy.push(3);

console.log(original); // [1, 2, 3] — исходный массив тоже изменился!

// Правильно (если нужна копия):
const copy = [...original];
copy.push(3);
console.log(original); // [1, 2] — не изменился

Альтернативы push()

Spread оператор (не мутирует)

const arr = [1, 2];
const newArr = [...arr, 3, 4];

console.log(arr); // [1, 2] — не изменился
console.log(newArr); // [1, 2, 3, 4]

concat() (не мутирует)

const arr = [1, 2];
const newArr = arr.concat(3, 4);

console.log(arr); // [1, 2] — не изменился
console.log(newArr); // [1, 2, 3, 4]

push() vs spread в React/современном коде

// Во фронтенде часто лучше использовать spread (для immutability)
const todos = [...todos, newTodo]; // Не мутирует
const todos = todos.push(newTodo); // Мутирует — может быть проблема в React

Практический пример: сбор данных

function collectValidNumbers(values) {
  const result = [];
  
  for (const value of values) {
    if (typeof value === "number" && !isNaN(value)) {
      const newLength = result.push(value);
      console.log(`Добавлено число ${value}, длина массива: ${newLength}`);
    }
  }
  
  return result;
}

const data = [1, "text", 2, null, 3, undefined];
const numbers = collectValidNumbers(data);
console.log(numbers); // [1, 2, 3]

Заключение

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

Что возвращает метод Push? | PrepBro