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

173
Views
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 answers
Answer question

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 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!