Крім оголошень функцій і функціональних виразів, у 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.
У цій вправі використайте вбудовані методи, щоб проаналізувати вміст масиву.
Еліз хоче знати позицію (індекс) карти в стосі.
const card = 2;
getCardPosition([9, 7, 3, 2], card);
// => 3
Еліз хоче визначити, чи є карта в стосі, тобто чи містить стос конкретне number.
const card = 3;
doesStackIncludeCard([2, 3, 4, 5], card);
// => true
Еліз хоче знати, чи кожна карта парна, тобто чи кожне число в стосі є парним number.
isEachCardEven([2, 4, 6, 7]);
// => false
Еліз хоче знати, чи є в стосі непарне число.
doesStackIncludeOddCard([3, 2, 6, 4, 8]);
// => true
Еліз хоче знати значення першої карти, яка є непарною.
getFirstOddCard([4, 2, 8, 7, 9]);
// => 7
Еліз хоче знати позицію першої парної карти.
getFirstEvenCardPosition([5, 2, 3, 1]);
// => 1
Зареєструйтеся на Exercism, щоб вивчати й опановувати JavaScript, а також 37 концепцій159 вправ та справжнє наставництво від людей, і все це безкоштовно.