Skip to content
Kezdőlap » Az includes() JavaScript függvény

Az includes() JavaScript függvény

Az includes függvény

Az includes() JavaScript függvény működése eltér a többi korábbi tömbfüggvény működéséhez képest, mint amilyen például a find(), filter(), vagy akár a map().

Az includes() függvénnyel el tudjuk dönteni, hogy egy adott érték benne van-e egy tömbben vagy nincs. Igen válasz esetén true a visszatérési érték, nemleges válasz pedig false-t eredményez.

A függvénynek két paramétere van. Az első kötelező. Ez a vizsgálandó elem, ami bármilyen érték lehet. A második paraméter megadása nem kötelező. Ez egy egész szám, hogy az includes() hányadik elemtől kezdje a keresést.

Így működik az includes egy paraméterrel

Kiindulásként csináltam egy tömböt, ami számokat tartalmaz:

const tomb = [1,2,3,4,5];

Először a 2 értéket, majd a 10 értéket fogom megkerestetni a függvénnyel (az eredményt azonnal a konzolba küldöm):

console.log(tomb.includes(2)); // true
console.log(tomb.includes(10)); // false 

Az eredmény magáért beszél. A 2 benne volt a tömbben, a 10 pedig nem.

Így működik az includes két paraméterrel

Nézzük meg a második paraméter használatát, amikor megmondom az includes()-nak, hogy légyszi egy konkrét indextől kezdve keresd nekem az adott elemet, köszi szépen! :).

console.log(tomb.includes(2, 0)); // true
console.log(tomb.includes(2, 3)); // false

Nem lesz meglepetés a végeredmény. Az első esetben igazat kapunk, mert a 2-őt keressük a legelső elemtől, aminek az indexe 0.

A második hívás pedig hamisat ad vissza. Ugyanis bár szintén a 2-őt keresem, de megmondtam a függvénynek, hogy a 3. indexű elemtől kezdje a keresést, ami a tömbben a 4-es elem. Tehát az includes() fogta magát, és a 4-től kezdve vizsgálta, hogy a 2 benne van-e a tömb(részlet)ben. És mivel nem találta, false-t adott vissza.

Objektum keresése (trükkös lesz)

Na és most keressünk objektumot! Adott egy objektumokat tartalmazó tömb:

const objTomb = [{id:1}, {id:2}, {id:3}];

Hogyan keresnénk meg mondjuk az {id:2} objektumot?

Hát így:

console.log(objTomb.includes({id:2}));

Ha megnézzük a konzolt, akkor ott az van, hogy false. Na de, hogy a bánatba? Hiszen az {id:2} objektum igenis benne van a tömbben!

Okés, akkor elmondom mi a csavar a sztoriban. Szóval az objektumok referencia típusok, vagyis ha egy objektumot el akarunk érni, akkor a rá mutató hivatkozásra van szükség. Ezért, amikor az includes-nek átadtam a {id:2} objektumot, akkor az egy teljesen másik objektum, mint ami a tömbön belül van. Ez egy tök más objektum a memóriában, a kettőnek köze sincs egymáshoz, noha a kulcs és az érték is egyezik. Nekünk a tömbön belüli objektumra mutató hivatkozás kell.

Szóval így a helyes:

const objRef = objTomb[1]; // objRef = {id:2}
console.log(objTomb.includes(objRef)); // most már true

Mit csináltam? Létrehoztam egy változót és beállítottam, hogy mutasson az tömbben levő {id:2} objektumra. Így az includes-nak magát a hivatkozást adtam át, ami tényleg arra az objektumra mutat, ami a tömbben hesszel.

Kitérő: objektumok és primitív adattípusok

Hogy könnyebb legyen megérteni az előző példában tárgyalt objektum referenciával kapcsolatos “horror sztorit”, itt egy videó, ami pontosan erről szól:

Működő példa

És végül készítettem egy példát online is. Ide kattintva lehet kipróbálni. (Mivel a repl.it egy angol nyelvű weboldal, az ottani példában angolul neveztem el a változókat.)