JSFiddle - React, Tailwind, and code Playground

by brigand

JavaScript

class Enumerate {
	constructor(inner) {
  	this.count = 0;
    this.inner = inner;
  }
	[Symbol.iterator]() {
		return this;
	}
  next() {
  	const desc = this.inner.next();
    if (desc.done) {
    	return desc;
    }
    
    return {
    	value: [this.count++, desc.value]
    };
  }
}

function enumerate(iterable) {
	return new Enumerate(iterable[Symbol.iterator] ? iterable[Symbol.iterator]() : iterable);
}

for (const [i, x] of enumerate('abc')) {
	console.log({ i, x });
}