JavaScript · Синтаксис · Початковий рівень

Функції рівень 2

20 завдань

Розширена практика функцій JavaScript: обробка рядків і чисел, логічні перевірки, масиви, фільтрація, підрахунки, пошук значень і написання перевикористовуваних функцій.

Як думати над функцією

#
На цьому рівні функції все ще невеликі, але логіка вимагає поєднання кількох інструментів: циклів, рядкових методів, умов і повернення значень. Складність — у виборі правильного підходу. Перш ніж писати тіло, поставте три запитання: який тип на вході, який тип має бути на виході, яка операція їх пов'язує? Для підрахунку чогось у рядку — голосних, букв, слів — патерн: проходимо по рядку, перевіряємо кожен символ, підтримуємо лічильник, повертаємо. ```javascript function countVowels(text) { const vowels = "aeiouy"; let count = 0; for (const char of text.toLowerCase()) { if (vowels.includes(char)) { count++; } } return count; } ``` text.toLowerCase() обробляє регістр перед перевіркою. vowels.includes(char) перевіряє, чи є символ серед голосних. Для рядкових перетворень — розвернути, видалити символи, обрізати краї: ```javascript function reverseText(text) { return text.split("").reverse().join(""); } function removeSpaces(text) { return text.split(" ").join(""); } function trimEdges(text) { return text.slice(1, -1); } ``` split("").reverse().join("") — ідіоматичний спосіб розвернути рядок у JavaScript. slice(1, -1) видаляє перший і останній символ. Для числових властивостей: ```javascript function lastDigit(n) { return Math.abs(n) % 10; } function absDiff(a, b) { return Math.abs(a - b); } function divisibleBy3And5(n) { return n % 3 === 0 && n % 5 === 0; } ``` Math.abs() — аналог Python's abs(). Остання цифра -47 — це 7, а не -7.

Патерни цього рівня

#
Перевірка на паліндром порівнює рядок із його зворотом: ```javascript function isPalindrome(text) { return text === text.split("").reverse().join(""); } ``` Чутливість до регістру має значення. "Racecar" у зворотному порядку — "racecaR", що не рівне. У продакшн-коді також потрібно видаляти пробіли та переводити до нижнього регістру. Підрахунок слів через split: ```javascript function countWords(text) { return text.trim().split(/\s+/).length; } ``` split(/\s+/) розбиває по одному або більше пробільних символах і обробляє зайві пробіли. Без trim() пробіл на початку створив би порожній перший елемент. Фільтрація і сума з масиву: ```javascript function sumPositive(numbers) { let total = 0; for (const n of numbers) { if (n > 0) { total += n; } } return total; } ``` Видалення певних символів: ```javascript function removeExclamations(text) { let result = ""; for (const char of text) { if (char !== "!") { result += char; } } return result; } ``` Або через split/join: ```javascript function removeExclamations(text) { return text.split("!").join(""); } ``` Обидві форми коректні. Цикл зрозуміліший для початківців; split/join — більш ідіоматичний JavaScript.
01

Even або Odd.

#

Напишіть функцію, яка приймає число і повертає рядок "Even" , якщо число парне, і "Odd" , якщо непарне.

function evenOrOdd(n) {
    // ваш код тут
}
Рішення
function evenOrOdd(n) {
    if (n % 2 === 0) {
        return "Even";
    } else {
        return "Odd";
    }
}
02

Переворот рядка функцією.

#

Напишіть функцію, яка приймає рядок і повертає його у перевернутому вигляді.

function reverseText(text) {
    // ваш код тут
}
Рішення
function reverseText(text) {
    return text.split('').reverse().join('');
}

// або так можна через цикл
function reverseText(text) {
    let result = "";
    for (let char of text) {
        result = char + result;
    }
    return result;
}
03

Середнє арифметичне.

#

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

function average(a, b) {
    // ваш код тут
}
Рішення
function average(a, b) {
    return (a + b) / 2;
}
04

Підрахунок голосних.

#

Напишіть функцію, яка приймає рядок і повертає кількість голосних букв у ньому. Голосні: a, e, i, o, u, y (регістр не важливий).

function countVowels(text) {
    // ваш код тут
}
Рішення
function countVowels(text) {
    let vowels = "aeiouy";
    let count = 0;

    for (let ch of text.toLowerCase()) {
        if (vowels.includes(ch)) {
            count += 1;
        }
    }

    return count;
}
05

Подільність на 3 і 5.

#

Напишіть функцію, яка приймає число і повертає true , якщо воно ділиться на 3 і на 5, інакше false .

function divisibleBy3And5(n) {
    // ваш код тут
}
Рішення
function divisibleBy3And5(n) {
    return (n % 3 === 0) && (n % 5 === 0);
}
06

Рядок без пробілів.

#

Напишіть функцію, яка приймає рядок і повертає його без пробілів.

function removeSpaces(text) {
    // ваш код тут
}
Рішення
function removeSpaces(text) {
    let result = "";
    for (let ch of text) {
        if (ch !== " ") {
            result += ch;
        }
    }
    return result;
}
07

Сума додатних елементів.

#

Напишіть функцію, яка приймає масив чисел і повертає суму додатних елементів.

function sumPositive(numbers) {
    // ваш код тут
}
Рішення
function sumPositive(numbers) {
    let total = 0;
    for (let n of numbers) {
        if (n > 0) {
            total += n;
        }
    }
    return total;
}
08

Перевірка паліндрома.

#

Напишіть функцію, яка приймає рядок і повертає true , якщо він є паліндромом.

function isPalindrome(text) {
    // ваш код тут
}
Рішення
function isPalindrome(text) {
    return text === text.split('').reverse().join('');
}

// або так можна: підготувати перевернутий рядок окремо
function isPalindrome(text) {
    let reversed = text.split("").reverse().join("");
    return text === reversed;
}
09

Positive, Negative або Zero.

#

Напишіть функцію, яка приймає число і повертає рядок: "Positive", "Negative" або "Zero".

function describeNumber(n) {
    // ваш код тут
}
Рішення
function describeNumber(n) {
    if (n > 0) {
        return "Positive";
    } else if (n < 0) {
        return "Negative";
    } else {
        return "Zero";
    }
}
10

Кількість слів у рядку.

#

Напишіть функцію, яка приймає рядок і повертає кількість слів у ньому. Слова розділені пробілами.

function countWords(text) {
    // ваш код тут
}
Рішення
function countWords(text) {
    if (text === "") {
        return 0;
    }
    return text.trim() ? text.trim().split(/\s+/).length : 0;
}

// або так можна: проміжний масив слів зберегти у змінну
function countWords(text) {
    let words = text.trim() ? text.trim().split(/\s+/) : [];
    return words.length;
}
11

Кратність десяти.

#

Напишіть функцію, яка приймає число і повертає true, якщо воно кратне 10, інакше false.

function isMultipleOfTen(n) {
    // ваш код тут
}
Рішення
function isMultipleOfTen(n) {
    return n % 10 === 0;
}
12

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

#

Напишіть функцію, яка приймає рядок і повертає його перший і останній символ у вигляді одного рядка.

function firstAndLast(text) {
    // ваш код тут
}
Рішення
function firstAndLast(text) {
    if (text === "") {
        return "";
    }
    return text[0] + text[text.length - 1];
}
13

Yes, якщо більше 100.

#

Напишіть функцію, яка приймає число і повертає рядок "Yes", якщо число більше 100, інакше "No".

function moreThanHundred(n) {
    // ваш код тут
}
Рішення
function moreThanHundred(n) {
    if (n > 100) {
        return "Yes";
    } else {
        return "No";
    }
}
14

Підрахунок букви a.

#

Напишіть функцію, яка приймає рядок і повертає кількість букв "a" у ньому (регістр не важливий).

function countA(text) {
    // ваш код тут
}
Рішення
function countA(text) {
    let count = 0;
    for (let ch of text.toLowerCase()) {
        if (ch === "a") {
            count += 1;
        }
    }
    return count;
}
15

Різниця за модулем.

#

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

function absDiff(a, b) {
    // ваш код тут
}
Рішення
function absDiff(a, b) {
    let diff = a - b;
    if (diff < 0) {
        diff = -diff;
    }
    return diff;
}

// або так можна через Math.abs
function difference(a, b) {
    return Math.abs(a - b);
}
16

Парна довжина рядка.

#

Напишіть функцію, яка приймає рядок і повертає true, якщо його довжина парна, інакше false.

function isEvenLength(text) {
    // ваш код тут
}
Рішення
function isEvenLength(text) {
    return text.length % 2 === 0;
}
17

Остання цифра числа.

#

Напишіть функцію, яка приймає число і повертає його останню цифру.

function lastDigit(n) {
    // ваш код тут
}
Рішення
function lastDigit(n) {
    if (n < 0) {
        n = -n;
    }
    return n % 10;
}
18

Без першої та останньої букви.

#

Напишіть функцію, яка приймає рядок і повертає його без першої та останньої букви.

function trimEdges(text) {
    // ваш код тут
}
Рішення
function trimEdges(text) {
    if (text.length <= 2) {
        return "";
    }
    return text.slice(1, -1);
}
19

Small, Medium або Large.

#

Напишіть функцію, яка приймає число і повертає рядок: - "Small" — якщо число менше 10 - "Medium" — якщо від 10 до 100 - "Large" — якщо більше 100

function sizeLabel(n) {
    // ваш код тут
}
Рішення
function sizeLabel(n) {
    if (n < 10) {
        return "Small";
    } else if (n <= 100) {
        return "Medium";
    } else {
        return "Large";
    }
}
20

Видалення знаків оклику.

#

Напишіть функцію, яка приймає рядок і повертає його без усіх знаків оклику "!".

function removeExclamations(text) {
    // ваш код тут
}
Рішення
function removeExclamations(text) {
    let result = "";
    for (let ch of text) {
        if (ch !== "!") {
            result += ch;
        }
    }
    return result;
}

// або так можна через replaceAll
function removeExclamations(text) {
    return text.replaceAll("!", "");
}