Különböző módszerek vannak a JavaScript-ben, amelyek segítségével elemeket kereshet egy tömbben. Melyik módszert választja, az adott használati esettől függ.
Például meg akarja kapni az összes elemet egy tömbben, amely megfelel egy adott feltételnek? Szeretné ellenőrizni, hogy valamelyik elem megfelel-e a feltételnek? Szeretné ellenőrizni, hogy egy adott érték szerepel-e a tömbben? Vagy meg akarja találni az érték indexét a tömbben?
Mindezen felhasználási esetekre a JavaScript Array.prototype metódusai vonatkoztak. Ebben a cikkben négy módszert fogunk megvitatni, amelyekkel elemeket kereshetünk egy tömbben. Ezek a módszerek a következők:
- Szűrő
- megtalálja
- Magába foglalja
- Indexe
Beszéljük meg mindegyiket.
Array.filter ()
Az Array.filter () módszerrel megkereshetünk egy tömbben egy bizonyos feltételnek megfelelő elemeket. Például, ha az összes elemet 10-nél nagyobb számtömbben szeretnénk megkapni, akkor ezt megtehetjük:
const array = [10, 11, 3, 20, 5]; const greaterThanTen = array.filter(element => element > 10); console.log(greaterThanTen) //[11, 20]
Az array.filter () metódus használatának szintaxisa a következő:
let newArray = array.filter(callback);
hol
newArray
a visszatérő új tömbarray
az a tömb, amelyen a szűrési metódust hívjákcallback
a visszahívási függvény, amelyet a tömb minden elemére alkalmazunk
Ha a tömbben egyetlen elem sem felel meg a feltételnek, akkor egy üres tömb jelenik meg. A módszerről itt olvashat bővebben.
Van, amikor nincs szükségünk minden elemre, amely megfelel egy bizonyos feltételnek. Csak egy elemre van szükségünk, amely megfelel a feltételnek. Ebben az esetben szüksége van a find () metódusra.
Array.find ()
Az Array.find () metódus segítségével megtaláljuk az első elemet, amely megfelel egy bizonyos feltételnek. A szűrési módszerhez hasonlóan a visszahívást is argumentumként veszi fel, és az első elemet adja vissza, amely megfelel a visszahívási feltételnek.
Használjuk a fenti példában a tömbön található keresési módszert.
const array = [10, 11, 3, 20, 5]; const greaterThanTen = array.find(element => element > 10); console.log(greaterThanTen)//11
A tömb.find () szintaxisa az
let element = array.find(callback);
A visszahívás az a függvény, amelyet a tömb minden értékén végrehajtanak, és három argumentumot tartalmaz:
element
- az iterálandó elem (kötelező)index
- az aktuális elem indexe / pozíciója (opcionális)array
- afind
meghívott tömb (opcionális)
Ne feledje azonban, hogy ha a tömbben egyetlen elem sem felel meg a feltételnek, akkor visszatér undefined
.
Mi lenne, ha mégis ellenőrizni szeretné, hogy egy bizonyos elem szerepel-e egy tömbben? Hogy csinálod ezt?
A tömb magában foglalja ()
Az include () módszer meghatározza, hogy egy tömb tartalmaz-e egy bizonyos értéket, és adott esetben igaz vagy hamis értéket ad vissza.
Tehát a fenti példában, ha ellenőrizni akarjuk, hogy 20-e a tömb egyik eleme, akkor ezt megtehetjük:
const array = [10, 11, 3, 20, 5]; const includesTwenty = array.includes(20); console.log(includesTwenty)//true
Észre fogja venni a különbséget ez a módszer és az általunk figyelembe vett más módszerek között. Ez a módszer visszahívás helyett egy értéket fogad el argumentumként. Itt van a szintaxisa az include metódusnak:
const includesValue = array.includes(valueToFind, fromIndex)
Hol
valueToFind
az az érték, amelyet a tömbben ellenőriz (kötelező), ésfromIndex
a tömb indexe vagy pozíciója, ahonnan el akarja kezdeni az elem keresését (opcionális)
Az index fogalmának megismeréséhez látogasson el újra a példánkra. Ha meg akarjuk vizsgálni, hogy a tömb tartalmaz-e 10 helyet az első elemen kívül, akkor ezt megtehetjük:
const array = [10, 11, 3, 20, 5]; const includesTenTwice = array.includes(10, 1); console.log(includesTenTwice)//false
Array.indexOf ()
Az indexOf () metódus adja vissza az első indexet, amelynél egy adott elem megtalálható egy tömbben. -1-et ad vissza, ha az elem nem létezik a tömbben.
Térjünk vissza a példánkra. Keressük meg a 3-as indexet a tömbben.
const array = [10, 11, 3, 20, 5]; const indexOfThree = array.indexOf(3); console.log(indexOfThree)//2
Szintaxisa hasonló a includes
módszeréhez.
const indexOfElement = array.indexOf(element, fromIndex)
Hol
element
az az elem, amelyet a tömbben keres (kötelező), ésfromIndex
a tömb indexe vagy pozíciója, ahonnan el akarja kezdeni az elem keresését (opcionális)
Fontos megjegyezni, hogy mind a includes
és indexOf
módszerek, és szigorú egyenlőség (===) keresni a tömbben. Ha az értékek különböző típusúak (például „4” és 4), akkor visszatérnek false
, -1
ill.
Összegzés
Ezekkel a tömb módszerekkel nem kell egy tömb kereséséhez használni a for ciklust. Attól függően, hogy mire van szüksége, eldöntheti, hogy a módszerek közül melyik a legalkalmasabb a felhasználási esetére.
Az alábbiakban összefoglaljuk az egyes módszerek használatának idejét:
- Használja,
filter
ha egy tömbben minden olyan elemet meg szeretne találni, amely megfelel egy adott feltételnek. - Használja,
find
ha szeretné ellenőrizni, hogy legalább egy elem megfelel-e egy meghatározott feltételnek. - Használja,
includes
ha szeretné ellenőrizni, hogy egy tömb tartalmaz-e egy adott értéket. - Használja,
indexOf
ha egy tömbben meg akarja találni egy adott elem indexét.
Értesítést szeretne kapni, amikor új cikket teszek közzé? Kattints ide.