Przechowywanie danych w tablicach obiektów, odczyt właściwości, wyszukiwanie rekordów za pomocą metody find oraz filtrowanie ofert metodą filter.
Tablica obiektów to jedna z najważniejszych struktur danych w języku JavaScript. Pozwala przechowywać powiązane zestawy informacji w uporządkowanej kolekcji, gdzie każdy element tablicy jest obiektem o określonych parach klucz-wartość:
const pracownicy = [
{ nazwisko: 'Marta Wiśniewska', dzial: 'Wsparcie techniczne', kontakt: 'marta@firma.pl' },
{ nazwisko: 'Tomasz Zieliński', dzial: 'Programista frontend', kontakt: 'tomasz@firma.pl' }
];
function pokazSzczegolyPracownika() {
const indeks = Number(document.getElementById('wybierzOsobe').value);
const wybranaOsoba = pracownicy[indeks];
document.getElementById('kartaNazwisko').innerHTML = 'Nazwisko: ' + wybranaOsoba.nazwisko;
document.getElementById('kartaDzial').innerHTML = 'Dział: ' + wybranaOsoba.dzial;
document.getElementById('kartaKontakt').innerHTML = 'Kontakt: ' + wybranaOsoba.kontakt;
}
const pracownicy = [
{ nazwisko: 'Marta Wiśniewska', dzial: 'Wsparcie techniczne', kontakt: 'marta@firma.pl' },
{ nazwisko: 'Tomasz Zieliński', dzial: 'Programista frontend', kontakt: 'tomasz@firma.pl' }
];
function pokazSzczegolyPracownika() {
const indeks = Number(document.getElementById('wybierzOsobe').value);
const wybranaOsoba = pracownicy[indeks];
document.getElementById('kartaNazwisko').innerHTML = 'Nazwisko: ' + wybranaOsoba.nazwisko;
document.getElementById('kartaDzial').innerHTML = 'Dział: ' + wybranaOsoba.dzial;
document.getElementById('kartaKontakt').innerHTML = 'Kontakt: ' + wybranaOsoba.kontakt;
}
W jaki sposób odczytać właściwość cena z pierwszego obiektu tablicy produkty?
Poprawna: a) Element zerowy tablicy to pierwszy obiekt, do którego właściwości odwołujemy się kropką.
Metoda tablica.find() służy do odnalezienia pierwszego elementu w kolekcji, który spełnia zdefiniowany warunek logiczny. Przekazujemy do niej funkcję zwrotną (tzw. predykat), która zwraca true dla poszukiwanego rekordu:
const magazyn = [
{ kod: 'A10', nazwa: 'Klawiatura mechaniczna', cena: 249 },
{ kod: 'B20', nazwa: 'Mysz gamingowa', cena: 159 },
{ kod: 'C30', nazwa: 'Podkładka XXL', cena: 69 }
];
function wyszukajTowar() {
const kod = document.getElementById('szukanyKod').value.trim().toUpperCase();
const wynikTekst = document.getElementById('wynikWyszukiwania');
const towar = magazyn.find(function(item) {
return item.kod === kod;
});
if (towar) {
wynikTekst.textContent = towar.nazwa + ' — cena: ' + towar.cena + ' zł';
wynikTekst.style.color = '#16a34a';
} else {
wynikTekst.textContent = 'Brak w magazynie towaru o kodzie: ' + kod;
wynikTekst.style.color = '#dc2626';
}
}
const magazyn = [
{ kod: 'A10', nazwa: 'Klawiatura mechaniczna', cena: 249 },
{ kod: 'B20', nazwa: 'Mysz gamingowa', cena: 159 },
{ kod: 'C30', nazwa: 'Podkładka XXL', cena: 69 }
];
function wyszukajTowar() {
const kod = document.getElementById('szukanyKod').value.trim().toUpperCase();
const wynikTekst = document.getElementById('wynikWyszukiwania');
const towar = magazyn.find(function(item) {
return item.kod === kod;
});
if (towar) {
wynikTekst.textContent = towar.nazwa + ' — cena: ' + towar.cena + ' zł';
wynikTekst.style.color = '#16a34a';
} else {
wynikTekst.textContent = 'Brak w magazynie towaru o kodzie: ' + kod;
wynikTekst.style.color = '#dc2626';
}
}
Co zwraca metoda tablica.find(warunek), jeżeli żaden element tablicy nie spełnił kryterium?
Poprawna: d) Gdy żaden element nie spełnia predykatu, metoda find() zwraca undefined.
Gdy użytkownik chce zobaczyć nie jeden rekord, lecz podzbiór danych spełniający określone kryteria (np. wszystkie wycieczki do Grecji lub towary tańsze niż 100 zł), korzystamy z metody tablica.filter() .
const wycieczki = [
{ nazwa: 'Ateny i Akropol', kraj: 'Grecja', cena: 1890 },
{ nazwa: 'Rzym i Watykan', kraj: 'Włochy', cena: 2150 },
{ nazwa: 'Wyspa Zakynthos', kraj: 'Grecja', cena: 2400 },
{ nazwa: 'Barcelona i Costa Brava', kraj: 'Hiszpania', cena: 1990 }
];
function filtrujWycieczki() {
const wybranyKraj = document.getElementById('filtrKategoria').value;
const lista = document.getElementById('listaOfert');
lista.innerHTML = '';
const przefiltrowane = wycieczki.filter(function(w) {
return wybranyKraj === 'wszystkie' || w.kraj === wybranyKraj;
});
przefiltrowane.forEach(function(w) {
const li = document.createElement('li');
li.innerHTML = '' + w.nazwa + ' (' + w.kraj + ') ' + w.cena + ' zł';
lista.appendChild(li);
});
}
const wycieczki = [
{ nazwa: 'Ateny i Akropol', kraj: 'Grecja', cena: 1890 },
{ nazwa: 'Rzym i Watykan', kraj: 'Włochy', cena: 2150 },
{ nazwa: 'Wyspa Zakynthos', kraj: 'Grecja', cena: 2400 },
{ nazwa: 'Barcelona i Costa Brava', kraj: 'Hiszpania', cena: 1990 }
];
function filtrujWycieczki() {
const wybranyKraj = document.getElementById('filtrKategoria').value;
const lista = document.getElementById('listaOfert');
lista.innerHTML = '';
const przefiltrowane = wycieczki.filter(function(w) {
return wybranyKraj === 'wszystkie' || w.kraj === wybranyKraj;
});
przefiltrowane.forEach(function(w) {
const li = document.createElement('li');
li.innerHTML = '' + w.nazwa + ' (' + w.kraj + ') ' + w.cena + ' zł';
lista.appendChild(li);
});
}
Co zwraca wywołanie metody tablica.filter(funkcjaWarunkowa)?
Poprawna: c) Metoda filter() tworzy i zwraca nową tablicę z elementami spełniającymi zdefiniowany test.