Коли ми працюємо з масивами, іноді потрібно виконати код для кожного значення в масиві. Це називається перебиранням масиву або циклом по ньому.
Тут ми розглянемо випадок, коли не потрібно змінювати масив у процесі перебирання. Якщо ж ідеться про перетворення масивів, натомість звернімося до Перетворень масивів.
for
Найпростіший спосіб перебрати масив - скористатися циклом for. Докладніше про це в Циклах for.
const numbers = [6.0221515, 10, 23];
for (let i = 0; i < numbers.length; i++) {
console.log(numbers[i]);
}
// => 6.0221515
// => 10
// => 23
for...of
Коли ми хочемо працювати зі значенням безпосередньо на кожній ітерації і нам зовсім не потрібен індекс, можна скористатися циклом for...of.
Цикл for...of працює так само, як показаний вище базовий цикл for, але замість того, щоб мати справу з індексом як зі змінною в циклі, ми одразу отримуємо значення.
const numbers = [6.0221515, 10, 23];
// Because re-assigning number inside the loop will be very
// confusing, disallowing that via const is preferable.
for (const number of numbers) {
console.log(number);
}
// => 6.0221515
// => 10
// => 23
Як і у звичайних циклах for, можна використати continue, щоб зупинити поточну ітерацію, і break, щоб повністю перервати виконання циклу.
forEach
Кожен масив має метод forEach, який можна використати, щоб перебрати елементи масиву.
forEach приймає колбек як параметр.
Функція-колбек викликається один раз для кожного елемента масиву.
Поточний елемент, його індекс і весь масив передаються колбеку як аргументи.
Часто використовуються лише поточний елемент або індекс.
const numbers = [6.0221515, 10, 23];
numbers.forEach((number, index) => console.log(number, index));
// => 6.0221515 0
// => 10 1
// => 23 2
Зупинити ітерацію після запуску циклу forEach неможливо.
Інструкції break і continue у цьому контексті не існують.
Еліз лише починає свій шлях у магії, тож їй потрібно вміти аналізувати свою колоду багатьма різними способами. Щоб усе було просто, вона використовує лише картки зі значеннями від 1 до 10.
Еліз хоче знати, скільки карток певного типу є в її колоді.
Напишіть функцію cardTypeCheck, яка приймає два параметри: масив карток (колода Еліз) і тип картки, який потрібно порахувати.
Функція має використовувати forEach і повертати кількість карток у колоді вказаного типу.
const cardType = 3;
cardTypeCheck([1, 2, 3, 4], cardType);
// => 1
Для ще одного фокусу Еліз потрібно знати, скільки непарних або парних карток є в її колоді.
Реалізуйте функцію determineOddEvenCards, яка приймає два параметри: масив карток (колода Еліз) і булеве значення (англ. Boolean), де true означає «парне», а false - «непарне».
Ця функція має повернути одне число: кількість непарних або парних карток у колоді (залежно від значення другого аргументу).
Щоб потренуватися, цього разу використайте цикл for...of у реалізації функції.
determineOddEvenCards([1, 2, 3, 1, 5, 6], true);
// => 2
determineOddEvenCards([1, 2, 3, 1, 5, 6], false);
// => 4
Зареєструйтеся на Exercism, щоб вивчати й опановувати JavaScript, а також 37 концепцій159 вправ та справжнє наставництво від людей, і все це безкоштовно.