JavaScript · Синтаксис · Початковий рівень
Функції рівень 3
Вправи щодо функцій JavaScript рівня 3: функції з режимами роботи, прапорами, кількома умовами, обробкою рядків, масивів та чисел для розвитку алгоритмічного мислення.
Короткий вступ до теми та пояснення перед вправами (вправи нижче):
Патерни режимів і прапорів
#Вправи:
Режим double або triple.
#Напишіть функцію, яка приймає число та рядок-режим: "double" або "triple". Якщо режим "double" — повернути число, помножене на 2, якщо "triple" — помножене на 3.
function scaleNumber(n, mode) {
// ваш код тут
}
Рішення
function scaleNumber(n, mode) {
if (mode === "double") {
return n * 2;
} else if (mode === "triple") {
return n * 3;
} else {
return n;
}
}
Прапорець верхнього регістру.
#Напишіть функцію, яка приймає рядок і логічне значення. Якщо прапорець upper дорівнює true — повернути рядок у верхньому регістрі, інакше — у нижньому.
function formatText(text, upper) {
// ваш код тут
}
Рішення
function formatText(text, upper) {
if (upper) {
return text.toUpperCase();
} else {
return text.toLowerCase();
}
}
Операція add або sub.
#Напишіть функцію, яка приймає два числа та рядок-операцію: "add" або "sub". Поверніть суму або різницю залежно від операції.
function calculate(a, b, operation) {
// ваш код тут
}
Рішення
function calculate(a, b, operation) {
if (operation === "add") {
return a + b;
} else if (operation === "sub") {
return a - b;
} else {
return 0;
}
}
Переворот за умовою.
#Напишіть функцію, яка приймає рядок і число. Якщо число більше 5 — повернути рядок у зворотному порядку, інакше — повернути рядок без змін.
function conditionalReverse(text, limit) {
// ваш код тут
}
Рішення
function conditionalReverse(text, limit) {
if (limit > 5) {
return text.split('').reverse().join('');
} else {
return text;
}
}
Абсолютне значення за прапорцем.
#Напишіть функцію, яка приймає число та прапорець. Якщо прапорець true — повернути абсолютне значення, якщо false — повернути число як є.
function maybeAbs(n, useAbs) {
// ваш код тут
}
Рішення
function maybeAbs(n, useAbs) {
if ((useAbs) && (n < 0)) {
return -n;
}
return n;
}
Режим first або last.
#Напишіть функцію, яка приймає рядок і режим: "first" або "last". Поверніть або перший символ рядка, або останній.
function pickChar(text, mode) {
// ваш код тут
}
Рішення
function pickChar(text, mode) {
if (text === "") {
return "";
}
if (mode === "first") {
return text[0];
} else if (mode === "last") {
return text[text.length - 1];
} else {
return "";
}
}
Сума або добуток.
#Напишіть функцію, яка приймає масив чисел і режим: "sum" або "product". Поверніть суму або добуток усіх елементів.
function combineNumbers(numbers, mode) {
// ваш код тут
}
Рішення
function combineNumbers(numbers, mode) {
if (mode === "sum") {
let total = 0;
for (let n of numbers) {
total += n;
}
return total;
} else if (mode === "product") {
let result = 1;
for (let n of numbers) {
result *= n;
}
return result;
} else {
return 0;
}
}
Видалення пробілів за прапорцем.
#Напишіть функцію, яка приймає рядок і прапорець. Якщо прапорець true — видалити всі пробіли, якщо false — повернути рядок без змін.
function cleanSpaces(text, remove) {
// ваш код тут
}
Рішення
function cleanSpaces(text, remove) {
if (!(remove)) {
return text;
}
let result = "";
for (let ch of text) {
if (ch !== " ") {
result += ch;
}
}
return result;
}
Режим even або odd.
#Напишіть функцію, яка приймає число і режим: "even" або "odd". Поверніть true, якщо число відповідає режиму.
function checkParity(n, mode) {
// ваш код тут
}
Рішення
function checkParity(n, mode) {
if (mode === "even") {
return n % 2 === 0;
} else if (mode === "odd") {
return n % 2 !== 0;
} else {
return false;
}
}
Перші або останні 3 символи.
#Напишіть функцію, яка приймає рядок і режим: "short" або "long". Якщо режим "short" — повернути перші 3 символи, якщо "long" — останні 3 символи.
function sliceText(text, mode) {
// ваш код тут
}
Рішення
function sliceText(text, mode) {
if (text.length < 3) {
return text;
}
if (mode === "short") {
return text.slice(0, 3);
} else if (mode === "long") {
return text.slice(-3);
}
}
Більше або менше за прапорцем.
#Напишіть функцію, яка приймає два числа і прапорець. Якщо прапорець true — повернути більше число, якщо false — менше.
function pickNumber(a, b, get_max) {
// ваш код тут
}
Рішення
function pickNumber(a, b, getMax) {
if (getMax) {
return (a > b ? a : b);
} else {
return (a < b ? a : b);
}
}
Count або length.
#Напишіть функцію, яка приймає рядок і режим: "count" або "length". Якщо режим "count" — повернути кількість букв "a", якщо "length" — довжину рядка.
function analyzeText(text, mode) {
// ваш код тут
}
Рішення
function analyzeText(text, mode) {
if (mode === "length") {
return text.length;
} else if (mode === "count") {
let cnt = 0;
for (let ch of text.toLowerCase()) {
if (ch === "a") {
cnt += 1;
}
}
return cnt;
}
}
Квадрат або куб.
#Напишіть функцію, яка приймає число і прапорець. Якщо прапорець true — повернути квадрат числа, якщо false — куб числа.
function powerByFlag(n, square) {
// ваш код тут
}
Рішення
function powerByFlag(n, square) {
if (square) {
return n * n;
} else {
return n * n * n;
}
}
Обрізка start або end.
#Напишіть функцію, яка приймає рядок і режим: "start" або "end". Якщо "start" — повернути рядок без перших 2 символів, якщо "end" — без останніх 2.
function trimText(text, mode) {
// ваш код тут
}
Рішення
function trimText(text, mode) {
if (text.length <= 2) {
return "";
}
if (mode === "start") {
return text.slice(2);
} else if (mode === "end") {
return text.slice(0, -2);
}
}
Sign або abs.
#Напишіть функцію, яка приймає число і режим: "sign" або "abs". Якщо режим "sign" — повернути рядок "positive", "negative" або "zero", якщо "abs" — повернути абсолютне значення числа.
function numberInfo(n, mode) {
// ваш код тут
}
Рішення
function numberInfo(n, mode) {
if (mode === "abs") {
return (n < 0 ? -n : n);
} else if (mode === "sign") {
if (n > 0) {
return "positive";
} else if (n < 0) {
return "negative";
} else {
return "zero";
}
} else {
return null;
}
}