Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

176
Views
¿Extender el prototipo JavaScript Array con un método para iterar las entradas al revés?

Dejando a un lado las preocupaciones sobre la modificación de Array.prototype de JavaScript por ahora, ¿cómo haría para escribir un método personalizado en el prototipo de Array que devuelva un iterador a la inversa? Específicamente, me gustaría proporcionar un método entryReverse() que haga exactamente lo que hace Array.prototype.entries() excepto en orden inverso. Tengo una función a medida:

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

pero estaré condenado si puedo descubrir cómo implementar esto como un método en el prototipo de Array existente. El problema parece estar tratando de referirse a 'esto' dentro del bloque Symbol.iterator; no se refiere a la matriz en sí, sino al iterador. ¿Alguna idea?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Será más fácil usar una función de generador. Llame al .entries() original y conviértalo en una matriz de las entradas, luego itere hacia atrás sobre esa matriz y yield cada elemento.

 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); }

Otra opción:

 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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!