Треки
/
JavaScript
JavaScript
/
Вправи
/
Аналітичні чари Еліз
Аналітичні чари Еліз

Аналітичні чари Еліз

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

Вступ

Стрілкові функції

Крім оголошень функцій і функціональних виразів, у JavaScript є ще один дуже стислий синтаксис для визначення функції. Такі функції називають стрілковими функціями.

Порівняймо оголошення функції та стрілкову функцію.

function addUpTwoNumbers(num1, num2) {
  return num1 + num2;
}
// function keyword removed and => added
const addUpTwoNumbers = (num1, num2) => {
  return num1 + num2;
};

Якщо тіло функції містить лише інструкцію return, як у прикладі вище, то {} і ключове слово return можна опустити. Якщо параметр лише один, дужки () теж можна опустити.

const addUpTwoNumbers = (num1, num2) => num1 + num2;
const square = num => num * num;

Стрілкові функції часто використовують, щоб визначити короткі колбек-функції безпосередньо у виклику функції.

applyToSquare(number => number * number);

Аналіз масивів

Масиви мають вбудовані методи для аналізу вмісту масиву. Більшість із цих методів приймає функцію, яка повертає true або false, як аргумент. Таку функцію називають predicate.

Ці вбудовані методи призначені для використання замість циклу for або вбудованого методу forEach:

Приклад аналізу з використанням циклу for:

const numbers = [1, 'two', 3, 'four'];
for (var i = 0; i < numbers.length; i++) {
  if (numbers[i] === 'two') {
    return i;
  }
}
// => 1

Приклад аналізу з використанням вбудованого методу:

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

Нижче показано деякі інші корисні вбудовані методи, доступні для аналізу масиву. Повний перелік методів масиву можна знайти в MDN.

includes

Метод includes(value) визначає, чи містить масив певне значення. Він повертає true, якщо значення присутнє, і false в іншому разі.

const numbers = [1, 'two', 3, 'four'];
numbers.includes(1);
// => true
numbers.includes('one');
// => false

every

Метод every(predicate) приймає функцію, яка є предикатом. Він перевіряє, чи всі елементи масиву повертають true, коли їх передати предикату. Іншими словами, метод перевіряє, що всі його елементи проходять перевірку, передану у виклик функції. Він повертає true, коли кожен елемент проходить перевірку предиката, і false в іншому разі.

const numbers = [1, 3, 5, 7, 9];
numbers.every((num) => num % 2 !== 0);
// => true

some

Метод some(predicate) такий самий, як метод every, але повертає true, якщо принаймні один елемент масиву проходить перевірку предиката.

const numbers = [1, 3, 5, 7, 9];
numbers.some((num) => num % 2 !== 0);
// => true

find

Метод find(predicate) повертає значення першого елемента масиву, який проходить перевірку predicate. Там, де some() повертає true, коли перевірка проходить, find() повертає саме значення з масиву. Метод повертає undefined, коли жоден елемент масиву не проходить перевірку предиката.

const numbers = [1, 3, 5, 7, 9];
numbers.find((num) => num < 5);
// => 1

findIndex

Метод findIndex(predicate) такий самий, як метод find(), але повертає (перший) індекс елемента, який проходить перевірку предиката, а не value. Метод повертає -1, коли жоден елемент масиву не проходить перевірку предиката.

const numbers = [1, 3, 5, 7, 9];
numbers.findIndex((num) => num > 7);
// => 4
numbers.findIndex((num) => num > 9);
// => -1

Вказівки

Еліз, майбутня чарівниця, продовжує навчання. Їй дадуть кілька стосів карт, з якими вона виконуватиме свої трюки. Щоб трохи спростити, вона використовує лише карти від 1 до 10.

У цій вправі використайте вбудовані методи, щоб проаналізувати вміст масиву.

1. Знайти позицію карти

Еліз хоче знати позицію (індекс) карти в стосі.

const card = 2;
getCardPosition([9, 7, 3, 2], card);
// => 3

2. Визначити, чи є карта в стосі

Еліз хоче визначити, чи є карта в стосі, тобто чи містить стос конкретне number.

const card = 3;
doesStackIncludeCard([2, 3, 4, 5], card);
// => true

3. Визначити, чи кожна карта парна

Еліз хоче знати, чи кожна карта парна, тобто чи кожне число в стосі є парним number.

isEachCardEven([2, 4, 6, 7]);
// => false

4. Перевірити, чи містить стос карту з непарним значенням

Еліз хоче знати, чи є в стосі непарне число.

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

5. Отримати першу непарну карту зі стосу

Еліз хоче знати значення першої карти, яка є непарною.

getFirstOddCard([4, 2, 8, 7, 9]);
// => 7

6. Визначити позицію першої парної карти

Еліз хоче знати позицію першої парної карти.

getFirstEvenCardPosition([5, 2, 3, 1]);
// => 1
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
JavaScript Exercism

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

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