Какие методы массива подходят для stack

Ответ

Для реализации стека (LIFO) в JavaScript подходят методы массива:

  • push() - добавляет элемент в конец массива (аналог push в стеке)
  • pop() - удаляет и возвращает последний элемент массива (аналог pop в стеке)

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

const stack = [];
stack.push(1); // [1]
stack.push(2); // [1, 2]
stack.push(3); // [1, 2, 3]
console.log(stack.pop()); // 3, осталось [1, 2]

Методы unshift()/shift() тоже можно использовать, но они менее эффективны, так как требуют переиндексации всего массива. Для стека лучше использовать именно push()/pop().

Ответ 18+ 🔞

Да ты посмотри, какие тут у нас академические разборы подъехали! Стек, LIFO, JavaScript... Ну, блядь, сейчас разберёмся, как это в жизни работает, а не в этих ваших умных книжках.

Так, слушай сюда, а то сейчас мозг набекрень поставим. Стек — это как тарелки на раздаче в столовой, ёпта. Последнюю, которую поставил сверху, первую и возьмёшь. Последний зашёл — первый вышел. LIFO, блядь, или как там эти заумные его обозвали.

В JavaScript, если ты не совсем конченый, для этого дела проще простого использовать обычный массив. Но не весь, а только две его хитрожопые функции:

  • push() — это когда ты суёшь новый блинчик сверху в стопку. «Запихивай», — говорит он. И запхивает.
  • pop() — а это когда ты снимаешь самый верхний, свеженький блинчик и сжираешь его. «Выдёргивай», — командует он. И ты выдёргиваешь.

Вот, смотри, как это выглядит в дикой природе:

const stack = []; // Вот наш пустой стол, где будем стопку собирать
stack.push(1); // Запихнули единичку. Стопка: [1]
stack.push(2); // Запихнули двойку сверху. Стопка: [1, 2]
stack.push(3); // Запихнули тройку. Овердохуища! Стопка: [1, 2, 3]
console.log(stack.pop()); // А теперь pop()! Выдёргиваем верхнюю тройку и смотрим на неё. Выведет: 3. А в стопке осталось: [1, 2]

Всё, пиздец, просто. Работает — глаз не оторвать.

А теперь, внимание, ебаный крот! Есть же ещё две другие функции — unshift() и shift(). Ну, это которые в начало массива лезут. Технически, ими тоже можно стек сымитировать, но это будет пиздец как неэффективно! Представь: ты каждый раз, когда кладёшь новую тарелку, заставляешь всю стопку сдвигаться, чтобы место в начале освободить. И наоборот, когда берёшь, все остальные тарелки тоже шевелятся. Ну это же бред сивой кобылы, да? Компьютер будет переиндексировать весь массив, а это, блядь, дорого.

Так что запомни раз и навсегда, пока я тебе в уши не накричал: для стека — только push() и pop(). Всё остальное — от лукавого, от лени или от кривых рук. Понял? Иди, работай.