JavaScript · Syntax · Beginner
Functions Level 3
JavaScript Functions Level 3 Exercises: Functions with modes, flags, multiple conditions, string, array, and number handling to develop algorithmic thinking.
Quick topic start and explanations before exercises (exercises below):
Mode and flag patterns
#Exercises:
Mode double or triple.
#function scaleNumber(n, mode) {
// your code here
}
Solution
function scaleNumber(n, mode) {
if (mode === "double") {
return n * 2;
} else if (mode === "triple") {
return n * 3;
} else {
return n;
}
}
Uppercase flag.
#function formatText(text, upper) {
// your code here
}
Solution
function formatText(text, upper) {
if (upper) {
return text.toUpperCase();
} else {
return text.toLowerCase();
}
}
Operation add or sub.
#function calculate(a, b, operation) {
// your code here
}
Solution
function calculate(a, b, operation) {
if (operation === "add") {
return a + b;
} else if (operation === "sub") {
return a - b;
} else {
return 0;
}
}
Reverse by condition.
#function conditionalReverse(text, limit) {
// your code here
}
Solution
function conditionalReverse(text, limit) {
if (limit > 5) {
return text.split('').reverse().join('');
} else {
return text;
}
}
Absolute value by flag.
#function maybeAbs(n, useAbs) {
// your code here
}
Solution
function maybeAbs(n, useAbs) {
if ((useAbs) && (n < 0)) {
return -n;
}
return n;
}
Mode first or last.
#function pickChar(text, mode) {
// your code here
}
Solution
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 or product.
#function combineNumbers(numbers, mode) {
// your code here
}
Solution
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;
}
}
Removing spaces by flag.
#function cleanSpaces(text, remove) {
// your code here
}
Solution
function cleanSpaces(text, remove) {
if (!(remove)) {
return text;
}
let result = "";
for (let ch of text) {
if (ch !== " ") {
result += ch;
}
}
return result;
}
Mode even or odd.
#function checkParity(n, mode) {
// your code here
}
Solution
function checkParity(n, mode) {
if (mode === "even") {
return n % 2 === 0;
} else if (mode === "odd") {
return n % 2 !== 0;
} else {
return false;
}
}
First or last 3 characters.
#function sliceText(text, mode) {
// your code here
}
Solution
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);
}
}
Greater or smaller by flag.
#function pickNumber(a, b, get_max) {
// your code here
}
Solution
function pickNumber(a, b, getMax) {
if (getMax) {
return (a > b ? a : b);
} else {
return (a < b ? a : b);
}
}
Count or length.
#function analyzeText(text, mode) {
// your code here
}
Solution
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;
}
}
Square or cube.
#function powerByFlag(n, square) {
// your code here
}
Solution
function powerByFlag(n, square) {
if (square) {
return n * n;
} else {
return n * n * n;
}
}
Trim start or end.
#function trimText(text, mode) {
// your code here
}
Solution
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 or abs.
#function numberInfo(n, mode) {
// your code here
}
Solution
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;
}
}