References

Array.includes()

Leírás

Az includes 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.

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

const array = [1, 2, 3, 4, 5]

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 szám, hogy az includes hányadik elemtől kezdje a keresést.

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(array.includes(2))
// Expected output: true
 
// a 2 benn volt a tömbben, a 10 pedig nem
console.log(array.includes(10))
// Expected output: false
 
console.log(array.includes(2, 0))
// Expected output: true
 
console.log(array.includes(2, 3))
// Expected output: false

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

A második hívás pedig false-t 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 ez includes fogta magát, és a 4-től kezdve vizsgálata, hogy a 2 benne van-e a tömbben. És mivel nem találta, false-t adott vissza.

const obj = [{ id: 1 }, { id: 2 }, { id: 3 }]
 
console.log(obj.includes({ id: 2 }))
// Expected output: false

Szóval az objektumok referencia típusok vagyis ha egy objektumot el akarnak é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 nincs 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 = obj[1]
 
console.log(obj.includes(objRef))
// Expected output: true

Létrehoztam egy változót és beállítottam, hogy mutasson az tömbben lévő {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.

Szintaxis

includes(searchElement)
includes(searchElement, fromIndex)

Példa

const array = [1, 2, 3]
 
console.log(array.includes(2))
// Expected output: true
 
const pets = ['cat', 'dog', 'bat']
 
console.log(pets.includes('cat'))
// Expected output: true
 
console.log(pets.includes('at'))
// Expected output: false
in this article
back to top