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("!", "");
}