---
id: 587d8250367417b2b2512c5e
title: Дізнайтесь, як працює стек
challengeType: 1
forumTopicId: 301705
dashedName: learn-how-a-stack-works
---
# --description--
На вашому столі, певно, є стос книг. Ви, ймовірно, використовували функцію скасування в текстовому редакторі, правда ж? А ще, вірогідно, ви часто натискаєте на кнопку «Назад», щоб повернутися до попередньої переглянутої вкладки в застосунку.
Знаєте, що у них спільного? Всі вони зберігають дані так, щоб ви могли повернутися до них.
Верхня книга у стосі — це та, яку поклали туди останньою. Якщо ви заберете цю книгу зі стосу, то побачите наступну — ту, яку поклали передостанньою, і так далі.
А тепер подумаємо: у всіх вищенаведених прикладах використано принцип останнім прийшло — першим пішло. Ми спробуємо зімітувати його за допомогою коду.
Така схема зберігання даних називається стеком. Зокрема, нам потрібно буде реалізувати метод `push()`, який переносить об’єкти JavaScript до вершини стеку, та метод `pop()`, який вилучає об’єкт JavaScript, що на цей момент знаходиться на вершині стеку.
# --instructions--
Вам дано стек домашніх завдань, поданих у вигляді масиву: `"BIO12"` розташовано знизу, а `"PSY44"` — зверху.
Змініть даний масив і розгляньте його як `stack`, використовуючи згадані вище методи JavaScript. Вилучіть верхній елемент `"PSY44"` зі стека. Потім додайте `"CS50"` як новий верхній елемент стеку.
# --hints--
`homeworkStack` повинен містити лише 4 елементи.
```js
assert(homeworkStack.length === 4);
```
Останнім елементом в `homeworkStack` має бути `"CS50"`.
```js
assert(homeworkStack[3] === 'CS50');
```
`homeworkStack` не повинен містити елемент `"PSY44"`.
```js
assert(homeworkStack.indexOf('PSY44') === -1);
```
Не змінюйте початкове оголошення `homeworkStack`.
```js
assert(
__helpers.removeJSComments(code).match(/=/g).length === 1 &&
/homeworkStack\s*=\s*\["BIO12"\s*,\s*"HIS80"\s*,\s*"MAT122"\s*,\s*"PSY44"\]/.test(
__helpers.removeJSComments(code)
)
);
```
# --seed--
## --seed-contents--
```js
var homeworkStack = ["BIO12","HIS80","MAT122","PSY44"];
// Only change code below this line
```
# --solutions--
```js
// solution required
```