|
| 1 | +'use strict'; |
| 2 | + |
| 3 | +// Задание 1: |
| 4 | +// У нас есть Map, который хранит список продуктов в корзине и их стоимость. |
| 5 | +// Напиши код, который считает общую стоимость всей корзины. |
| 6 | +// Условие: Используй тот способ итерации, который наиболее логичен и "чист" в ситуации, когда нам вообще не важны названия продуктов (ключи), а нужны только цифры. |
| 7 | + |
| 8 | +const cart = new Map([ |
| 9 | + ['Apple', 1.5], |
| 10 | + ['Banana', 0.8], |
| 11 | + ['Milk', 2.0], |
| 12 | + ['Bread', 1.2], |
| 13 | +]); |
| 14 | + |
| 15 | +// const cartSum = [...cart.values()].reduce((acc, price) => acc + price, 0); |
| 16 | + |
| 17 | +// ?? альтернативное решение (проще.. но быстрее, т.к. без создания доп. массива) |
| 18 | +let cartSum = 0; |
| 19 | + |
| 20 | +for (const price of cart.values()) { |
| 21 | + cartSum += price; |
| 22 | +} |
| 23 | + |
| 24 | +console.log(cartSum); // 5.5 |
| 25 | + |
| 26 | +// !! Задание 2: |
| 27 | +// У нас есть статистика посещений сайта пользователями. Ключ — это объект пользователя, Значение — количество посещений. |
| 28 | +// Напиши цикл for...of, который выведет в консоль фразы вида: User Alex visited 5 times, User Ivan visited 10 times |
| 29 | +// Челендж (по желанию): Попробуй сделать деструктуризацию максимально глубокой прямо в объявлении цикла, чтобы внутри цикла не писать key.name, а обращаться к имени напрямую через переменную name. |
| 30 | + |
| 31 | +const user1 = { name: 'Alex', id: 1 }; |
| 32 | +const user2 = { name: 'Ivan', id: 2 }; |
| 33 | + |
| 34 | +const visits = new Map([ |
| 35 | + [user1, 5], |
| 36 | + [user2, 10], |
| 37 | +]); |
| 38 | + |
| 39 | +for (const [{ name }, numOfVisits] of visits) { |
| 40 | + console.log(`User ${name} visited ${numOfVisits} times`); // "User Alex visited 5 times", "User Ivan visited 10 times" |
| 41 | +} |
| 42 | + |
| 43 | +// Задание 3: |
| 44 | +// У нас есть складской учет. Map хранит название товара и его остаток на складе. |
| 45 | +// Нам нужно получить простой массив (Array) названий товаров, которые закончились (количество равно 0). Ожидаемый результат: ['Shirt', 'Hat']. |
| 46 | +// Подсказка: Подумай, какой тип итерации (ключи, значения или пары) тебе нужен, чтобы проверить условие и сохранить результат. |
| 47 | + |
| 48 | +const inventory = new Map([ |
| 49 | + ['Socks', 10], |
| 50 | + ['Shirt', 0], |
| 51 | + ['Pants', 5], |
| 52 | + ['Hat', 0], |
| 53 | +]); |
| 54 | + |
| 55 | +// const outOfStock = []; |
| 56 | +// |
| 57 | +// for (const [key, value] of inventory) { |
| 58 | +// if (value === 0) { |
| 59 | +// outOfStock.push(key); |
| 60 | +// } |
| 61 | +// } |
| 62 | + |
| 63 | +// ?? альтернативное решение (современное.. функциональное) |
| 64 | +const outOfStock = [...inventory] |
| 65 | + .filter(([_, qty]) => qty === 0) |
| 66 | + .map(([name]) => name); |
| 67 | + |
| 68 | +console.log(outOfStock); // [ 'Shirt', 'Hat' ] |
0 commit comments