|
| 1 | +'use strict'; |
| 2 | + |
| 3 | +// Задание 1: |
| 4 | +// Нам нужно написать небольшой скрипт для расчёта стоимости доставки. |
| 5 | +// 1. Создай константу basePrice (базовая цена) со значением 1500. |
| 6 | +// 2. Создай константу shippingCost (стоимость доставки) со значением 350. |
| 7 | +// 3. Создай переменную promoCode со значением 'PROMO_10'. |
| 8 | +// 4. Создай переменную discount. |
| 9 | +// 5. Используя оператор && (как в файле 4.9), напиши однострочное выражение: если promoCode равен 'PROMO_10', то discount должен стать равен 0.1 (10%), иначе он должен остаться undefined (или чем он был до этого). |
| 10 | +// 6. Выведи в консоль итоговую стоимость (total), используя формулу: (basePrice * (1 - discount)) + shippingCost. |
| 11 | +// (В этой задаче есть небольшой подвох, связанный с NaN, о котором мы говорили. Посмотрим, как ты с ним справишься, когда promoCode не будет 'PROMO_10'). |
| 12 | + |
| 13 | +const basePrice = 1500; |
| 14 | +const shippingCost = 350; |
| 15 | +let promoCode = 'PROMO_10'; |
| 16 | +let discount; |
| 17 | + |
| 18 | +discount = promoCode === 'PROMO_10' && 0.1; |
| 19 | +let total = basePrice * (1 - discount) + shippingCost; |
| 20 | + |
| 21 | +console.log(total); // 1700 |
| 22 | + |
| 23 | +// Задание 2: |
| 24 | +// Представь, что у тебя есть строка с именем пользователя, которая может прийти "грязной" (с пробелами по краям). |
| 25 | +// let rawUserName = ' Alex '; |
| 26 | +// Также у тебя есть переменная userStatus, которая хранит статус. |
| 27 | +// let userStatus = ''; // falsy-значение |
| 28 | +// Нужно написать код, который: |
| 29 | +// 1. Создаст новую переменную userName и положит в неё "очищенное" имя rawUserName (используй метод для удаления пробелов, который упоминался в файлах 4.2/4.7 в примерах, хотя он явно не разбирался). |
| 30 | +// 2. Создаст переменную greeting. |
| 31 | +// 3. Используя шаблонные строки (4.7) и оператор || (4.9), создай строку greeting, которая будет иметь вид: "Привет, [userName]! (Статус: [userStatus])" |
| 32 | +// 4. Если userStatus (как в нашем случае) — это falsy (пустая строка), то вместо него в скобках должно подставиться слово "Гость". |
| 33 | +// Выведи greeting в консоль. |
| 34 | + |
| 35 | +let rawUserName = ' Alex '; |
| 36 | +let userStatus = ''; // falsy-значение |
| 37 | + |
| 38 | +let userName = rawUserName.trim(); |
| 39 | +let greeting = `Привет, ${userName}! (Статус: ${userStatus || 'Гость'})`; // можно сразу/здесь отработать ..или || присвоение, не вынося это предварительно в отдельную строчку |
| 40 | + |
| 41 | +console.log(greeting); // Привет, Alex! (Статус: Гость) |
| 42 | + |
| 43 | +// Задание 3: |
| 44 | +// У нас есть строковая переменная itemPrice, которая содержит цену товара, но она пришла в "грязном" виде (с символом $ и пробелами). |
| 45 | +// let itemPrice = ' 500$ '; |
| 46 | +// Также у нас есть количество этого товара: |
| 47 | +// let itemCount = 3; |
| 48 | +// Нам нужно: |
| 49 | +// 1. "Очистить" itemPrice от пробелов (как в прошлой задаче). |
| 50 | +// 2. "Очистить" itemPrice от символа $. (Подсказка: в JS есть метод .replace(). str.replace('что', 'на_что')). |
| 51 | +// 3. Преобразовать очищенную строку itemPrice в число (используй унарный плюс из 4.2/4.8). |
| 52 | +// 4. Рассчитать totalCost (итоговую стоимость) как произведение цены и количества. |
| 53 | +// 5. Вывести в консоль totalCost. |
| 54 | + |
| 55 | +let itemPrice = ' 500$ '; |
| 56 | +let itemCount = 3; |
| 57 | + |
| 58 | +itemPrice = +itemPrice.trim().replace('$', ''); |
| 59 | + |
| 60 | +let totalCost = itemPrice * itemCount; |
| 61 | +console.log(totalCost); // 1500 |
| 62 | + |
| 63 | +// Задание 4: |
| 64 | +// Давай поработаем с инкрементом/декрементом (4.3). Представим, что у нас есть счётчик лайков. |
| 65 | +// let likes = 99; |
| 66 | +// let userAction = 'like'; // Может быть 'like' или 'dislike' |
| 67 | +// Напиши код, который: |
| 68 | +// 1. Проверяет значение userAction. |
| 69 | +// 2. Если userAction равен 'like', увеличь likes на 1, используя оператор инкремента (++). |
| 70 | +// 3. Если userAction равен 'dislike', уменьши likes на 1, используя оператор декремента (--). |
| 71 | +// 4. Выведи итоговое значение likes в консоль. |
| 72 | +// (Попробуй использовать if...else if или тернарный оператор) |
| 73 | + |
| 74 | +let likes = 99; |
| 75 | +let userAction = 'like'; // Может быть 'like' или 'dislike' |
| 76 | + |
| 77 | +if (userAction === 'like') { |
| 78 | + likes++; |
| 79 | +} else { |
| 80 | + likes--; |
| 81 | +} |
| 82 | + |
| 83 | +// userAction === 'like' ? likes++ : likes--; // как альтернативное решение |
| 84 | + |
| 85 | +console.log(likes); // 100 |
| 86 | + |
| 87 | +// Задание 5: |
| 88 | +// Это финальная задача, она объединяет несколько тем: typeof (4.5), операторы сравнения (4.3), falsy-значения (4.9) и строковые методы. |
| 89 | +// У нас есть переменная userInput, которая может прийти в разном виде (строка, null, undefined и т.д.), и константа minLoginLength. |
| 90 | +// let userInput = ' myLogin '; // Попробуй также 'abc' и null |
| 91 | +// const minLoginLength = 4; |
| 92 | +// Нам нужно проверить, является ли userInput валидным логином. |
| 93 | +// Логин считается валидным, если он одновременно: |
| 94 | +// 1. Является строкой (проверь typeof). |
| 95 | +// 2. И его "очищенная" версия (после .trim()) длиннее или равна minLoginLength. |
| 96 | +// Создай переменную isValid и, используя оператор && (4.9) для объединения проверок, присвой ей true или false. Выведи isValid в консоль. |
| 97 | +// (Подсказка-предупреждение: что произойдёт, если ты попытаешься вызвать .trim() у null? Порядок проверок с && здесь очень важен!) |
| 98 | + |
| 99 | +let userInput = ' myLogin '; // Попробуй также 'abc' и null |
| 100 | +const minLoginLength = 4; |
| 101 | + |
| 102 | +let isValid = |
| 103 | + typeof userInput === 'string' && userInput.trim().length >= minLoginLength; |
| 104 | + |
| 105 | +console.log(isValid); // true |
0 commit comments