Array.prototype.keys / values / entries în JavaScript

Tablouri (array) ES2015 (ES6)

Returnează iteratori pentru indicii, valorile sau perechile [indice, valoare] ale unui tablou.

Sintaxă
tablou.keys()
tablou.values()
tablou.entries()

Ce face Array.prototype.keys / values / entries

Cele trei metode returnează iteratori, folosiți de obicei cu for...of: keys() dă indicii (0, 1, 2…), values() dă elementele, iar entries() dă perechi [indice, element].

entries() este modul obișnuit de a avea și poziția în for...of. Un iterator poate fi parcurs o singură dată; pentru un tablou folosește [...tablou.keys()] sau Array.from.

Ce returnează

Un iterator (Array Iterator).

Exemple

Exemplul 1: Indice și valoare în for…of

const podium = ["Ana", "Radu", "Elena"];

for (const [pozitie, nume] of podium.entries()) {
  console.log(`${pozitie + 1}. ${nume}`);
}

Rezultat

1. Ana
2. Radu
3. Elena

Exemplul 2: Indicii, inclusiv pentru găuri

const rar = ["a", , "c"];

console.log([...rar.keys()]);
console.log(Object.keys(rar));
console.log([...rar.values()]);

Rezultat

[ 0, 1, 2 ]
[ '0', '2' ]
[ 'a', undefined, 'c' ]

Greșeli frecvente

  • Afișezi direct rezultatul: console.log(tablou.keys()) arată Object [Array Iterator] {}. Desface iteratorul cu [...].

Comenzi înrudite

  • for...of: Parcurge pe rând elementele unui tablou, ale unui șir sau ale altei colecții.
  • Object.entries: Transformă un obiect într-un tablou de perechi [cheie, valoare], ușor de parcurs.
  • Iterator.from: Transformă orice iterabil sau iterator într-un iterator cu metodele map, filter, take, toArray.