Kolekcje: Iteracja i Konwersja

Javascript
Priorytet: Normalny Szkic

Zadanie 5.3: Iteracja i Konwersja Struktur

Wstęp

W prawdziwej pracy programisty często musisz zamienić format danych. Masz obiekt, a potrzebujesz tablicy do posortowania. Masz tablicę duplikatów, a potrzebujesz unikalnego zbioru. Płynna konwersja między typami to kluczowa umiejętność.

Cel zadania

Opanowanie metod Object.keys/values/entries, iteratorów Map/Set oraz konwersji przy użyciu Array.from i operatora Spread.

Wymagania techniczne

  1. Konwersja Obiekt -> Tablica (klucze, wartości).
  2. Konwersja Tablica -> Mapa i Mapa -> Obiekt.
  3. Użycie pętli for...of na kolekcjach.

Kroki do wykonania

1. Obiekt na Tablicę

Obiekty nie mają metody .map ani .filter. Aby je przetworzyć, często zamieniamy je na tablice.

const settings = {
    theme: "dark",
    notifications: true,
    volume: 80
};

// 1. Tylko klucze
const keys = Object.keys(settings); // ["theme", "notifications", "volume"]

// 2. Tylko wartości
const values = Object.values(settings); // ["dark", true, 80]

// 3. Pary [klucz, wartość]
const entries = Object.entries(settings); 
// [ ["theme", "dark"], ["notifications", true], ["volume", 80] ]

2. Tablica par na Obiekt

Jeśli masz tablicę par (jak wyżej), możesz ją zamienić z powrotem na obiekt używając Object.fromEntries().

const newEntries = [
    ["user", "Marek"],
    ["role", "Admin"]
];

const newObj = Object.fromEntries(newEntries);
console.log(newObj); // { user: "Marek", role: "Admin" }

3. Iteracja po Mapie

Mapa ma wbudowane metody zwracające iteratory: .keys(), .values(), .entries().

const inventory = new Map([
    ["Ołówek", 100],
    ["Długopis", 50]
]);

// Pętla for...of jest świetna do Map
for (const [item, quantity] of inventory) {
    console.log(`Mamy ${quantity} sztuk ${item}`);
}

4. Zadanie praktyczne

Masz następujące dane z API (tablica obiektów):

const users = [
    { id: 101, name: "Kowalski" },
    { id: 102, name: "Nowak" },
    { id: 103, name: "Wiśniewski" }
];

Twoim zadaniem jest:

  1. Stworzyć Mapę, gdzie kluczem będzie id użytkownika, a wartością jego name.
  2. Użyć tej Mapy, aby szybko znaleźć imię użytkownika o ID 102.
  3. Następnie przekonwertuj tę Mapę z powrotem na obiekt (gdzie kluczem jest ID jako string).

[!TIP] Do szybkiej zamiany users na mapę możesz użyć users.map aby stworzyć pary [id, name], a potem wrzucić to do konstruktora new Map().

[!IMPORTANT] Commit: Zadanie 5.3 - Konwersja.