JavaScript: об'єкти та JSON

Деструктуризація об'єктів та spread

📖 Теорія
JavaScript
1Деструктуризація об'єктів:
2class="hl-keyword">const { name, age } = user;
💡 Приклад коду
Вивід:

                            
📝 ЗАВДАННЯ (3)
1.
Завдання 1: Деструктуризація
10 XP
Маємо: const product = { id: 42, name: 'Навушники', price: 1500, inStock: true }.
Витягни name, price та inStock через деструктуризацію. Виведи кожне значення.
💡 Підказка: const { name, price, inStock } = product
🔓 Розв'язок:
const product = { id: 42, name: 'Навушники', price: 1500, inStock: true };
const { name, price, inStock } = product;
console.log(name);
console.log(price);
console.log(inStock);
Вивід:

                                

2.
Завдання 2: Spread та злиття
20 XP
Маємо:
const defaults = { theme: 'light', lang: 'uk', fontSize: 14 };
const userPrefs = { theme: 'dark', fontSize: 18 };

Створи merged як злиття defaults та userPrefs (userPrefs перезаписує defaults). Виведи merged.
💡 Підказка: { ...defaults, ...userPrefs } — другий об'єкт має пріоритет
🔓 Розв'язок:
const defaults = { theme: 'light', lang: 'uk', fontSize: 14 };
const userPrefs = { theme: 'dark', fontSize: 18 };
const merged = { ...defaults, ...userPrefs };
console.log(merged);
Вивід:

                                

3.
Завдання 3: Масив об'єктів
30 XP
Маємо масив:
const team = [
{name:'Аліна', role:'frontend', exp:3},
{name:'Богдан', role:'backend', exp:5},
{name:'Віра', role:'frontend', exp:2},
{name:'Гліб', role:'devops', exp:7}
];
Виведи:
1. Імена всіх frontend-розробників
2. Загальний досвід команди
3. Члена з найбільшим досвідом (тільки name та exp)
💡 Підказка: filter+map, reduce, reduce або sort
🔓 Розв'язок:
const team = [{name:'Аліна',role:'frontend',exp:3},{name:'Богдан',role:'backend',exp:5},{name:'Віра',role:'frontend',exp:2},{name:'Гліб',role:'devops',exp:7}];
console.log(team.filter(m => m.role === 'frontend').map(m => m.name));
console.log(team.reduce((acc, m) => acc + m.exp, 0));
const top = team.reduce((best, m) => m.exp > best.exp ? m : best);
console.log(`${top.name}: ${top.exp}`);
Вивід: