Kolekcje: Iteracja i Konwersja
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
- Konwersja Obiekt -> Tablica (klucze, wartości).
- Konwersja Tablica -> Mapa i Mapa -> Obiekt.
- Użycie pętli
for...ofna 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:
- Stworzyć Mapę, gdzie kluczem będzie
idużytkownika, a wartością jegoname. - Użyć tej Mapy, aby szybko znaleźć imię użytkownika o ID 102.
- Następnie przekonwertuj tę Mapę z powrotem na obiekt (gdzie kluczem jest ID jako string).
[!TIP] Do szybkiej zamiany
usersna mapę możesz użyćusers.mapaby stworzyć pary[id, name], a potem wrzucić to do konstruktoranew Map().
[!IMPORTANT] Commit: Zadanie 5.3 - Konwersja.