Czy wiesz czym .includes() różni się od .some()?
includes()
pozwala nam sprawdzić, czy element Y znajduje się w tablicy, np.:
const zbior = [1,2,3,4,5,6,7];
const wynik = zbior.includes(3);
console.log(wynik); // true, 3 znajduje się w zbiorze liczb
includes()
porównuje obiekty przez referencje, świetnie sprawdzi się w prostych typach, ale przy obiektach może nie zadziałać zgodnie z oczekiwaniem, np.:
const bogurodzica = {name: 'Bogurodzica'};
const songs = [bogurodzica, {name: 'Cicha noc'}, {name: 'Lulajże'}];
const wynik = songs.includes({name: 'Bogurodzica'});
console.log(wynik); // false, jest to inny obiekt
const wynikRef = songs.includes(bogurodzica);
console.log(wynikRef); // true
Rozwiązaniem tego problemu jest użycie funkcji some(fn)
. Iteruje ona po elementach i sprawdza warunek (fn
) podany dla konkretnego elementu. Funkcja zwróci true
, gdy dowolny element spełni warunek lub false
, gdy żaden element nie pasuje do warunku, np.:
const songs = [{name: 'Bogurodzica'}, {name: 'Cicha noc'}, {name: 'Lulajże'}];
const wynik = songs.some((song) => song.name === 'Bogurodzica');
console.log(wynik); // true
const brak = songs.some((song) => song.name === 'Master of puppets');
console.log(brak); // false
Miłego przeszukiwania tablic!
💡 "Czy wiesz, że?" to wewnątrzfirmowa inicjatywa, której celem jest szerzenie ciekawostek
z różnych obszarów IT. Najlepsze z nich trafiają na bloga dla szerszego grona odbiorców.