Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

177
Vistas
Extend JavaScript Array prototype with method to iterate entries in reverse?

Putting aside concerns about modifying JavaScript's Array.prototype for now, how would I go about writing a custom method on the Array prototype that returns an iterator in reverse? Specifically, I'd like to provide an entriesReverse() method that does exactly what Array.prototype.entries() does except in reverse order. I've got as far as a bespoke function:

const entriesReverse = (array) => ({
    [Symbol.iterator]() {
        let index = array.length;
        return {
            next: () => ({
                value: [--index, array[index]],
                done: index < 0
            })
        }
    }
})

but I'll be darned if I can figure out how to implement this as a method on the existing Array prototype. The problem seems to be trying to refer to 'this' inside the Symbol.iterator block - it doesn't refer to the array itself but to the iterator. Any thoughts?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

It'll be easier to use a generator function. Call the original .entries() and turn it into an array of the entries, then iterate backwards over that array and yield each item.

Array.prototype.entriesReverse = function*() {
  const entries = [...this.entries()];
  for (let i = entries.length - 1; i >= 0; i--) {
    yield entries[i];
  }
};

for (const entry of ['a', 'b', 'c'].entriesReverse()) {
  console.log(entry);
}

Another option:

Array.prototype.entriesReverse = function*() {
  yield* [...this.entries()].reverse();
};

for (const entry of ['a', 'b', 'c'].entriesReverse()) {
  console.log(entry);
}

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda