Array.prototype.pop()

Метод pop() (висунути) примірників Array прибирає останній елемент з масиву – і повертає цей елемент. Цей метод змінює довжину масиву.

Спробуйте його в дії

Синтаксис

pop()

Параметри

Жодних.

Повернене значення

Усунутий з масиву елемент; undefined, якщо масив порожній.

Опис

Метод pop() прибирає з масиву останній елемент – і повертає значення цього елемента в місце виклику. Якщо викликати pop() на порожньому масиві, він поверне undefined.

Array.prototype.shift() має подібну до pop() логіку, але застосовується до першого елемента масиву.

Метод pop() є змінювальним методом. Він змінює довжину та вміст this. Якщо треба, аби значення this було тим самим, але повертався новий масив без останнього елемента, можна натомість використати arr.slice(0, -1).

Метод pop() є узагальненим. Він лишень очікує, що значення this матиме властивість length, а також цілочислові властивості. Попри те, що рядки також є масивоподібними значеннями, цей метод не підходить для застосування до них, адже рядки є незмінними.

Приклади

Усунення останнього елемента масиву

Наступний код створює масив myFish, що містить чотири елементи, а потім прибирає його останній елемент.

const myFish = ["янгол", "клоун", "мандаринка", "осетер"];

const popped = myFish.pop();

console.log(myFish); // ['янгол', 'клоун', 'мандаринка' ]

console.log(popped); // 'осетер'

Виклик pop() на об'єктах-немасивах

Метод pop() зчитує з this властивість length. Якщо нормалізована довжина – 0, то length наново присвоюється 0 (хоч до цього в цій властивості могло бути від'ємне значення або undefined). Інакше – повертається та видаляється значення властивості length - 1.

const arrayLike = {
  length: 3,
  unrelated: "foo",
  2: 4,
};
console.log(Array.prototype.pop.call(arrayLike));
// 4
console.log(arrayLike);
// { length: 2, unrelated: 'foo' }
const plainObj = {};
// Властивості length немає, отже, довжина – 0
Array.prototype.pop.call(plainObj);
console.log(plainObj);
// { length: 0 }

Використання об'єкта в масивоподібний спосіб

push і pop свідомо зроблені узагальненими, і це можна використовувати для отримання переваг – як це демонструє наступний приклад.

Зверніть увагу, що в цьому прикладі не створюється масив для зберігання колекції об'єктів. натомість колекція зберігається на самому об'єкті, і на Array.prototype.push і Array.prototype.pop використовується call, аби обманути ці методи, ніби вони обробляють масив.

const collection = {
  length: 0,
  addElements(...elements) {
    // obj.length буде збільшено на одиницю автоматично
    // щоразу, коли додається елемент.

    // Повернення того, що повертає push;
    // тобто нового значення властивості length
    return [].push.call(this, ...elements);
  },
  removeElement() {
    // obj.length буде зменшено на одиницю автоматично
    // щоразу, коли прибирається елемент.

    // Повернення того, що повертає pop;
    // тобто прибраного елемента
    return [].pop.call(this);
  },
};

collection.addElements(10, 20, 30);
console.log(collection.length); // 3
collection.removeElement();
console.log(collection.length); // 2

Специфікації

Сумісність із браузерами

desktop mobile server
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet Deno Node.js
pop
Chrome Full support 1
Edge Full support 12
Firefox Full support 1
Internet Explorer Full support 5.5
Opera Full support 4
Safari Full support 1
WebView Android Full support 1
Chrome Android Full support 18
Firefox for Android Full support 4
Opera Android Full support 10.1
Safari on iOS Full support 1
Samsung Internet Full support 1.0
Deno Full support 1.0
Node.js Full support 0.10.0

Дивіться також