Треки
/
JavaScript
JavaScript
/
Вправи
/
Чари Еліз
Чари Еліз

Чари Еліз

Навчальна вправа

Вступ

У JavaScript масив є структурою, схожою на список, без фіксованої довжини, яка може зберігати примітиви чи обʼєкти будь-якого типу, навіть змішаних типів.

Щоб створити масив, додамо елементи між квадратними дужками []. Щоб прочитати значення з масиву, поставимо індекс у квадратних дужках [] після ідентифікатора. Індекси масиву починаються з нуля.

Наприклад:

const numbers = [1, 'two', 3, 'four'];
numbers[2];
// => 3

Щоб дізнатися кількість елементів у масиві, використаємо властивість length:

const numbers = [1, 'two', 3, 'four'];
numbers.length;
// => 4

Щоб змінити елемент масиву, присвоїмо значення за його індексом:

const numbers = [1, 'two', 3, 'four'];
numbers[0] = 'one';
numbers;
// => ['one', 'two', 3, 'four']

Методи

Деякі з методів, доступних для кожного обʼєкта Array, можна використати, щоб додати елементи до масиву або видалити їх. Ось кілька з них, які варто розглянути, працюючи над цією вправою:

push

value можна додати в кінець масиву за допомогою .push(value). Метод повертає нову довжину масиву.

const numbers = [1, 'two', 3, 'four'];
numbers.push(5); // => 5
numbers;
// => [1, 'two', 3, 'four', 5]

pop

Останнє value можна видалити з масиву за допомогою .pop(). Метод повертає видалене значення. Через цю зміну довжина масиву зменшиться.

const numbers = [1, 'two', 3, 'four'];
numbers.pop(); // => four
numbers;
// => [1, 'two', 3]

shift

Перше value можна видалити з масиву за допомогою .shift(). Метод повертає видалене значення. Через цю зміну довжина масиву зменшиться.

const numbers = [1, 'two', 3, 'four'];
numbers.shift(); // => 1
numbers;
// => ['two', 3, 'four']

unshift

value можна додати на початок масиву за допомогою .unshift(value). Метод повертає нову довжину масиву.

const numbers = [1, 'two', 3, 'four'];
numbers.unshift('one'); // => 5
numbers;
// => ['one', 1, 'two', 3, 'four']

splice

value за певним index можна видалити з масиву за допомогою .splice(index, 1). Метод повертає видалений елемент (або елементи).

const numbers = [1, 'two', 3, 'four'];
numbers.splice(2, 1, 'one'); // => [3]
numbers;
// => [1, 'two', 'one', 'four']
Advanced

Ці методи потужніші, ніж описано:

  • І push, і unshift дають змогу додати чи вставити кілька значень одразу, додавши більше аргументів. Для виконання цієї вправи це не потрібно.
  • Splice може видалити кілька значень, якщо збільшити другий аргумент. Для виконання цієї вправи це не потрібно.
  • Splice також може додати кілька значень, якщо передати їх як аргументи після deleteCount. Це можна використати, щоб замінити значення або вставити значення в середину масиву (наприклад, видаливши 0 елементів). Для виконання цієї вправи це не потрібно.

Вказівки

Як майбутня чарівниця, Еліз має відпрацювати деякі основи. У неї є стос карток, з яким вона хоче працювати.

Щоб трохи спростити собі життя, вона використовує лише картки від 1 до 10, тож її стос карток можна подати як масив чисел. Позиція певної картки відповідає індексу в масиві. Це означає, що позиція 0 вказує на першу картку, позиція 1 - на другу, і так далі.

Note

Усі функції, крім двох, повинні оновлювати масив карток, а потім повертати змінений масив. Це поширений підхід, відомий як патерн Builder, який дозволяє зручно поєднувати функції в ланцюжок.

Винятків лише два: getItem, яка повинна повертати картку за вказаною позицією, і checkSizeOfStack, яка повинна повертати true, якщо наданий розмір збігається.

1. Витягніть картку зі стосу

Щоб узяти картку, поверніть картку за індексом position із наданого стосу.

const position = 2;
getItem([1, 2, 4, 1], position);
// => 4

2. Обміняйте картку в стосі

Виконайте невеличкий фокус: обміняйте картку за індексом position на надану картку для заміни. Поверніть змінений стос.

const position = 2;
const replacementCard = 6;
setItem([1, 2, 4, 1], position, replacementCard);
// => [1, 2, 6, 1]

3. Вставте картку вгорі стосу

Зробіть так, щоб картка зʼявилася: вставте нову картку вгорі стосу. Поверніть змінений стос.

const newCard = 8;
insertItemAtTop([5, 9, 7, 1], newCard);
// => [5, 9, 7, 1, 8]

4. Видаліть картку зі стосу

Зробіть так, щоб картка зникла: видаліть картку за вказаною позицією position зі стосу. Поверніть змінений стос.

const position = 2;
removeItem([3, 2, 6, 4, 8], position);
// => [3, 2, 4, 8]

5. Видаліть верхню картку зі стосу

Зробіть так, щоб картка зникла: видаліть картку вгорі стосу. Поверніть змінений стос.

removeItemFromTop([3, 2, 6, 4, 8]);
// => [3, 2, 6, 4]

6. Вставте картку внизу стосу

Зробіть так, щоб картка зʼявилася: вставте нову картку внизу стосу. Поверніть змінений стос.

const newCard = 8;
insertItemAtBottom([5, 9, 7, 1], newCard);
// => [8, 5, 9, 7, 1]

7. Видаліть картку знизу стосу

Зробіть так, щоб картка зникла: видаліть картку знизу стосу. Поверніть змінений стос.

removeItemAtBottom([8, 5, 9, 7, 1]);
// => [5, 9, 7, 1]

8. Перевірте розмір стосу

Перевірте, чи дорівнює розмір стосу stackSize.

const stackSize = 4;
checkSizeOfStack([3, 2, 6, 4, 8], stackSize);
// => false
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
JavaScript Exercism

Час розпочати Чари Еліз?

Зареєструйтеся на Exercism, щоб вивчати й опановувати JavaScript, а також 37 концепцій159 вправ та справжнє наставництво від людей, і все це безкоштовно.