Files

72 lines
3.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
id: 587d8250367417b2b2512c5e
title: Основи роботи зі стеком
challengeType: 1
forumTopicId: 301705
dashedName: learn-how-a-stack-works
---
# --description--
На вашому столі, певно, є стос книг. Ви, ймовірно, використовували функцію скасування в текстовому редакторі, правда ж? А ще, вірогідно, ви часто натискаєте на кнопку "Назад" у вашому телефоні, щоб повернутися до попередньої переглянутої вкладки в застосунку.
Знаєте, що у них спільного? Всі вони зберігають дані так, щоб ви могли повернутися до них.
Верхня книга у стосі це та, яку поклали туди останньою. Якщо ви заберете цю книгу зі стосу, то побачите наступну - ту, яку поклали туди перед останньою, і так далі.
А тепер подумаймо: у всіх вищенаведених прикладах ви отримуєте тип сервісу <dfn>Last-In-First-Out</dfn> (Останній прийшов - перший пішов). Ми спробуємо зімітувати цей принцип за допомогою нашого коду.
Така схема зберігання даних називається <dfn>стеком</dfn>. Зокрема, нам потрібно буде реалізувати метод `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(
code.match(/=/g).length === 1 &&
/homeworkStack\s*=\s*\["BIO12"\s*,\s*"HIS80"\s*,\s*"MAT122"\s*,\s*"PSY44"\]/.test(
code
)
);
```
# --seed--
## --seed-contents--
```js
var homeworkStack = ["BIO12","HIS80","MAT122","PSY44"];
// Only change code below this line
```
# --solutions--
```js
// solution required
```