Skip to content

Commit 8484bcf

Browse files
committed
[REC-4/st-compl] basics, 2-nd
Solving 5 tasks. Working with "&&, `` str, trim(), unary +, typeof". Worth noting: - single-line expression with "&&" operator. FS-dev: B-3 / JS basic
1 parent 504ef64 commit 8484bcf

File tree

2 files changed

+105
-0
lines changed

2 files changed

+105
-0
lines changed

full-stack-dev/3-js-basic/4-basics/recall/recall.js renamed to full-stack-dev/3-js-basic/4-basics/recall/1-first/recall.js

File renamed without changes.
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
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

Comments
 (0)