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

Метод pop() для массивов в JavaScript
Раздел: Массивы, Стек/Очередь
pop: T | undefined

Основы метода pop()

Метод pop() является встроенным методом объектов типа Array в JavaScript. Он предназначен для удаления последнего элемента из массива.

Этот метод используется, когда необходимо изменить исходный массив, удалив из него конечный элемент. Такая операция часто встречается при работе со структурами данных, подобными стеку (LIFO - Last In, First Out).

Аргументы: Метод pop() не принимает никаких аргументов.

Возвращаемое значение: Метод возвращает удаленный элемент. Если массив был пустым на момент вызова, pop() вернет значение undefined, а сам массив останется пустым (его длина станет равной 0).

Вызов метода изменяет исходный массив, уменьшая его свойство length на единицу.

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

Базовое удаление элемента:

let fruits = ['Яблоко', 'Банан', 'Апельсин'];
let removed = fruits.pop();
console.log(removed);
console.log(fruits);
'Апельсин'
['Яблоко', 'Банан']

Работа с пустым массивом:

let emptyArray = [];
let result = emptyArray.pop();
console.log(result);
console.log(emptyArray.length);
undefined
0

Похожие методы в JavaScript

shift() - удаляет первый элемент массива и возвращает его. Сдвигает все последующие элементы на одну позицию влево. Подходит для реализации очереди (FIFO).

splice() - универсальный метод для удаления, замены или добавления элементов в любом месте массива. Может удалять несколько элементов одновременно.

slice() - возвращает новый массив, содержащий копию части исходного массива, не изменяя его. Для удаления элементов нужно комбинировать с присваиванием.

Выбор метода зависит от задачи: pop() оптимален для удаления с конца, shift() - с начала, а splice() - для произвольных позиций или множественного удаления.

Типичные ошибки

Попытка использовать на не массиве:

let obj = {0: 'a', length: 1};
let val = obj.pop(); // Ошибка
console.log(val);
TypeError: obj.pop is not a function

Непонимание мутабельности (изменения исходного массива):

let arr1 = [1, 2, 3];
let arr2 = arr1;
arr2.pop();
console.log(arr1); // arr1 тоже изменился
[1, 2]

Игнорирование возвращаемого значения:

let stack = [];
// ... какой-то код
stack.pop(); // Если массив пуст, вернется undefined, что может быть неочевидно
// Лучше:
let item = stack.pop();
if (item !== undefined) {
    // обработать item
}

Изменения в последних версиях

Метод pop() является частью самой первой спецификации ECMAScript 1 (1997 год) и с тех пор его поведение не менялось. Он остается полностью обратно совместимым.

В современных версиях JavaScript он по-прежнему является одним из самых быстрых способов удалить последний элемент массива.

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

Реализация стека:

Пример javascript
let stack = [];
// Добавление в стек (push)
stack.push('Задача 1');
stack.push('Задача 2');
console.log('Стек:', stack);
// Извлечение из стека (pop)
while (stack.length > 0) {
    let task = stack.pop();
    console.log('Выполняется:', task);
}
console.log('Стек после выполнения:', stack);
Стек: [ 'Задача 1', 'Задача 2' ]
Выполняется: Задача 2
Выполняется: Задача 1
Стек после выполнения: []

Использование с деструктуризацией:

Пример javascript
function getLastAndRest(arr) {
    let last = arr.pop();
    return [last, arr];
}
let numbers = [10, 20, 30];
let [lastElement, newArray] = getLastAndRest(numbers);
console.log(lastElement);
console.log(newArray);
30
[10, 20]

Эмуляция очереди с ограниченной емкостью (удаление старого элемента при добавлении нового):

Пример javascript
let buffer = new Array(3); // Буфер на 3 элемента
let index = 0;
function addToBuffer(value) {
    buffer[index] = value;
    index = (index + 1) % buffer.length;
}
// Заполняем буфер
addToBuffer('A');
addToBuffer('B');
addToBuffer('C');
console.log(buffer); // ['A', 'B', 'C']
// Добавляем новый элемент - буфер "сдвигается"
addToBuffer('D');
console.log(buffer); // ['D', 'B', 'C']
// Для реализации через pop/shift:
let queue = ['A', 'B', 'C'];
function addWithLimit(arr, value, limit) {
    arr.push(value);
    if (arr.length > limit) {
        arr.shift(); // Удаляем первый, а не последний
    }
}
addWithLimit(queue, 'D', 3);
console.log(queue);
[ 'A', 'B', 'C' ]
[ 'D', 'B', 'C' ]
[ 'B', 'C', 'D' ]

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

Python: метод pop() у списков, но может принимать индекс (по умолчанию -1). Возвращает удаленный элемент.

my_list = [1, 2, 3]
val = my_list.pop()
print(val)  # 3
print(my_list)  # [1, 2]
val2 = my_list.pop(0)
print(val2)  # 1
3
[1, 2]
1

PHP: функция array_pop(). Работает аналогично, но является функцией, а не методом.

$arr = array('a', 'b', 'c');
$last = array_pop($arr);
print_r($arr);
Array
(
    [0] => a
    [1] => b
)

C++ (STL vector): метод pop_back(). Удаляет последний элемент, но не возвращает его значение. Для получения значения нужно сначала обратиться к back().

JS pop function comments

En
Pop Removes the last element from an array and returns that element