Array.prototype.indexOf / lastIndexOf în JavaScript

Tablouri (array) ES5 (toate browserele moderne)

Returnează poziția primei (sau ultimei) apariții a unei valori în tablou, ori -1.

Sintaxă
tablou.indexOf(valoare, deLa)
tablou.lastIndexOf(valoare, deLa)

Ce face Array.prototype.indexOf / lastIndexOf

indexOf caută valoarea de la început și returnează prima poziție unde o găsește. lastIndexOf caută de la sfârșit spre început. Dacă valoarea lipsește, ambele returnează -1.

Comparația este strictă (===), deci "1" și 1 sunt diferite, iar două obiecte cu același conținut sunt diferite. Spre deosebire de includes, indexOf nu găsește NaN.

Parametri

Parametru Descriere
valoare Valoarea căutată.
deLa Opțional. Poziția de la care începe căutarea (negativ: de la sfârșit).

Ce returnează

Poziția (de la 0) sau -1.

Exemple

Exemplul 1: Prima și ultima apariție

const note = [7, 9, 10, 9, 8];

console.log(note.indexOf(9));
console.log(note.lastIndexOf(9));
console.log(note.indexOf(5));
console.log(note.indexOf("9"));

Rezultat

1
3
-1
-1

Exemplul 2: Eliminarea duplicatelor

const etichete = ["js", "css", "js", "html", "css"];

console.log(etichete.filter((e, i) => etichete.indexOf(e) === i));

Rezultat

[ 'js', 'css', 'html' ]

Exemplul 3: NaN: indexOf față de includes

const valori = [1, NaN, 3];

console.log(valori.indexOf(NaN), valori.includes(NaN));

Rezultat

-1 true

Greșeli frecvente

  • Cauți un obiect după conținut: [{ id: 1 }].indexOf({ id: 1 }) dă -1. Folosește findIndex cu o condiție.

Comenzi înrudite