Skip to main content Accessibility Feedback

How to get the index of an array item in a vanilla JS for...of loop

Last month, we looked at the for...of loop. Since then, I’ve been asked a few times when you should use a for...of loop, and when you should use Array.forEach().

This is highly subjective, but I generally prefer a for...of loop in most situations. The only time I’d pick Array.forEach() instead are when I need the index of the item.

But, my friend Charles Roper shared a cool technique with me that you can use to get the index inside a for...of loop. Let’s take a look!

The Array.entries() method

The Array.entries() method returns a new Array Iterator of index/value pairs.

let wizards = ['Gandalf', 'Radagast', 'Merlin'];
let entries = wizards.entries();

The returned value is an iterable. You can’t access its values directly, but you can use the Iterator.next() method and the value property.

// returns [0, "Gandalf"]
entries.next().value;

The for...of loop and array destructuring

A few weeks ago, we also learned about the array destructuring syntax.

We can combine Array.entries() with array destructuring to get the index inside of the loop.

for (let [index, wizard] of wizards.entries()) {
	console.log(wizard, index);
}

This is useful if, for example, you wanted to break a loop after a certain condition was met.