Emad's Notes Twitter (X) GitHub

Let’s talk about loops—those trusty tools that let us work with collections of data. But not all loops are created equal. Today, we’ll unpack direct iteration: a streamlined way to process elements without wrestling with indices or callbacks.

What Makes Iteration “Direct”?

Direct iteration means your loop accesses elements straight from an iterable object—no index counters or intermediary functions required. It’s like shaking hands with your data instead of passing notes through a middleman.


The Direct Approach: for...of

This loop works seamlessly with iterables like:

How it works:

const myArray = [10, 20, 30];

// Straight to the point
for (const item of myArray) {
  console.log(item); // 10, 20, 30 – no index math!
}

The magic? item isn’t a reference or an index—it’s the actual value from your collection.


Indirect Alternatives

forEach – The Callback Middleman

const myArray = [10, 20, 30];

myArray.forEach((item) => {
  console.log(item);
});

While functional, forEach delegates control to a callback function—adding a layer of abstraction.

Classic for Loop – Index Gymnastics

const myArray = [10, 20, 30];

for (let i = 0; i < myArray.length; i++) {
  const item = myArray[i];
  console.log(item);
}

Why count chairs at a concert when you can walk straight to the people?


Why for...of Wins


Loop Comparison

for...offorEachClassic for
FocusValuesFunction executionIndex math
Readability”I want THIS""Do THIS for each""Count, then get”
Best ForMost iterablesArray-specific tasksPrecise index control

When to Use Direct Iteration

✅ Clean, value-focused code ✅ Working with Maps/Sets/strings ✅ Slight performance gains

Reach for alternatives when: 🛠 You need backward iteration or manual index control 🛠 Supporting legacy environments (though rare today)


The Bottom Line

Direct iteration with for...of isn’t just about syntax—it’s about writing code that communicates intent. By focusing on values over mechanics, you create cleaner, more maintainable code.

Next time you loop, ask: “Am I solving the problem or just managing the plumbing?”