- Создан репозиторий
goit-js-hw-02
- При сдаче домашней работы есть ссылка на исходные файлы в репозитории
- Каждое задание выполнено в отдельном файле с именем
task-номер_задания.js
. Используй<script type="module">
чтобы закрыть код задания в отдельной области видимости и избежать конфликтов имен идентификаторов. - Имена переменных и функций понятные, описательные
- Код отформатирован с помощью Prettier
Напиши функцию logItems(array)
, которая получает массив и использует цикл
for
, который для каждого элемента массива будет выводить в консоль сообщение в
формате [номер элемента] - [значение элемента]
.
Нумерация должна начинаться с 1
. К примеру для первого элемента массива
['Mango', 'Poly', 'Ajax']
с индексом 0
будет выведено '1 - Mango'
, а для
индекса 2
выведет '3 - Ajax'
.
const logItems = function(array) {
// твой код
};
/*
* Вызовы функции для проверки работоспособности твоей реализации.
*/
logItems(['Mango', 'Poly', 'Ajax', 'Lux', 'Jay', 'Kong']);
logItems([5, 10, 15, 20, 25, 30, 35, 40, 45, 50]);
Напиши скрипт подсчета стоимости гравировки украшений. Для этого создай функцию
calculateEngravingPrice(message, pricePerWord)
принимающую строку (в строке
будут только слова и пробелы) и цену гравировки одного слова, и возвращающую
цену гравировки всех слов в строке.
const calculateEngravingPrice = function(message, pricePerWord) {
// твой код
};
/*
* Вызовы функции для проверки работоспособности твоей реализации.
*/
console.log(
calculateEngravingPrice(
'Proin sociis natoque et magnis parturient montes mus',
10,
),
); // 80
console.log(
calculateEngravingPrice(
'Proin sociis natoque et magnis parturient montes mus',
20,
),
); // 160
console.log(
calculateEngravingPrice('Donec orci lectus aliquam est magnis', 40),
); // 240
console.log(
calculateEngravingPrice('Donec orci lectus aliquam est magnis', 20),
); // 120
Напиши фукцнию findLongestWord(string)
, которая принимает параметром
произвольную строку (в строке будут только слова и пробелы) и возвращает самое
длинное слово в этой строке.
const findLongestWord = function(string) {
// твой код
};
/*
* Вызовы функции для проверки работоспособности твоей реализации.
*/
console.log(findLongestWord('The quick brown fox jumped over the lazy dog')); // 'jumped'
console.log(findLongestWord('Google do a roll')); // 'Google'
console.log(findLongestWord('May the force be with you')); // 'force'
Напиши функцию formatString(string)
которая принимает строку и форматирует ее
если необходимо.
- Если длина строки не превышает
40 символов
, функция возвращает ее в исходном виде. - Если длина больше
40 символов
, то функция обрезает строку до 40-ка символов и добавляет в конец строки троеточие'...'
, после чего возвращает укороченную версию.
const formatString = function(string) {
// твой код
};
/*
* Вызовы функции для проверки работоспособности твоей реализации.
*/
console.log(formatString('Curabitur ligula sapien, tincidunt non.'));
// вернется оригинальная строка
console.log(formatString('Vestibulum facilisis, purus nec pulvinar iaculis.'));
// вернется форматированная строка
console.log(formatString('Curabitur ligula sapien.'));
// вернется оригинальная строка
console.log(
formatString(
'Nunc sed turpis. Curabitur a felis in nunc fringilla tristique.',
),
);
// вернется форматированная строка
Напиши функцию checkForSpam(message)
, принимающую 1 параметр message
-
строку. Функция проверяет ее на содержание слов spam
и sale
. Если нашли
зарещенное слово то функция возвращает true
, если запрещенных слов нет функция
возвращает false
. Слова в строке могут быть в произвольном регистре.
const checkForSpam = function(message) {
// твой код
};
/*
* Вызовы функции для проверки работоспособности твоей реализации.
*/
console.log(checkForSpam('Latest technology news')); // false
console.log(checkForSpam('JavaScript weekly newsletter')); // false
console.log(checkForSpam('Get best sale offers now!')); // true
console.log(checkForSpam('[SPAM] How to earn fast money?')); // true
Напиши скрипт со следующим функционалом:
- При загрузке страницы пользователю предлагается в
prompt
ввести число. Ввод сохраняется в переменнуюinput
и добавляется в массив чиселnumbers
. - Операция ввода числа пользователем и сохранение в массив продолжается до тех
пор, пока пользователь не нажмет
Cancel
вprompt
. - После того как пользователь прекратил ввод нажав
Cancel
, если массив не пустой, необходимо посчитать сумму всех элементов массива и записать ее в переменнуюtotal
. Используй циклfor
илиfor...of
. После чего в консоль выведи строку'Общая сумма чисел равна [сумма]'
.
🔔 Делать проверку того, что пользователь ввел именно число, а не произвольный
набор символов, не обязательно. Если хочешь, в случае некорректного ввода,
показывай alert
с текстом 'Было введено не число, попробуйте еще раз'
, при
этом результат prompt
записывать в массив чисел не нужно, после чего снова
пользователю предлагается ввести число в prompt
.
let input;
const numbers = [];
let total = 0;
Есть массив logins
с логинами пользователей. Напиши скрипт добавления логина в
массив logins
. Добавляемый логин должен:
- проходить проверку на длину от 4 до 16-ти символов включительно
- быть уникален, то есть отсутствовать в массиве
logins
Разбей задачу на подзадачи с помощью функций.
Напиши функцию isLoginValid(login)
, в которой проверь количество символов
параметра login
и верни true
или false
в зависимости от того, попадает ли
длина параметра в заданный диапазон от 4-х до 16-ти символов включительно.
Напиши функцию isLoginUnique(allLogins, login)
, которая принимает список всех
логинов и добавляемый логин как параметры и проверяет наличие login
в массиве
allLogins
, возвращая true
если такого логина еще нет и false
если логин
уже используется.
Напиши функцию addLogin(allLogins, login)
которая:
- Принимает новый логин и массив всех логинов как параметры
- Проверяет валидность логина используя вспомогательную функцию
isLoginValid
- Если логин не валиден, прекратить исполнение функции
addLogin
и вернуть строку'Ошибка! Логин должен быть от 4 до 16 символов'
- Если логин валиден, функция
addLogin
проверяеть уникальность логина с помощью функцииisLoginUnique
- Если
isLoginUnique
вернетfalse
, тогдаaddLogin
не добавляет логин в массив и возвращает строку'Такой логин уже используется!'
- Если
isLoginUnique
вернетtrue
,addLogin
добавляет новый логин вlogins
и возвращает строку'Логин успешно добавлен!'
🔔 Принцип единственной ответственности функции - каждая функция делает что-то одно. Это позволяет переиспользовать код и изменять логику работы функции только в одном месте, не затрагивая работу программы в целом.
Предикатные функции возвращают только true
или false
. Такие функции принято
называть начиная с is
: isLoginUnique
и isLoginValid
в нашем случае.
isLoginUnique
только проверяет есть ли такой логин в массиве и возвращаетtrue
илиfalse
.isLoginValid
только проверяет валидный ли логин и возвращаетtrue
илиfalse
.addLogin
добавляет или не добавляет логин в массив. При этом для проверок условия добавления использует результаты вызовов других функций -isLoginUnique
иisLoginValid
.
const logins = ['Mango', 'robotGoogles', 'Poly', 'Aj4x1sBozz', 'qwerty123'];
const isLoginValid = function(login) {
// твой код
};
const isLoginUnique = function(allLogins, login) {
// твой код
};
const addLogin = function(allLogins, login) {
// твой код
};
/*
* Вызовы функции для проверки работоспособности твоей реализации.
*/
console.log(addLogin(logins, 'Ajax')); // 'Логин успешно добавлен!'
console.log(addLogin(logins, 'robotGoogles')); // 'Такой логин уже используется!'
console.log(addLogin(logins, 'Zod')); // 'Ошибка! Логин должен быть от 4 до 16 символов'
console.log(addLogin(logins, 'jqueryisextremelyfast')); // 'Ошибка! Логин должен быть от 4 до 16 символов'