Array iteration performance in JavaScript
Array Iteration Performance in JavaScript — Which Method is Fastest?
JavaScript offers various methods for iterating over arrays. However, when dealing with large datasets or performance-sensitive applications, choosing the right method can make a significant difference.
In this article, we will compare the most popular methods in terms of speed, readability, and use cases.
| Method | Description |
| for | Classic for loop |
| while | Standard while loop |
| for...of | ES6 feature for iterables |
| forEach | Array method with a callback |
| map | Returns a new array |
| reduce | For value accumulation |
| for...in | Works on indexes (not recommended for arrays) |
const arr = Array.from({ length: 1_000_000 }, (_, i) => i);
console.time('for');
for (let i = 0; i < arr.length; i++) {
arr[i] * 2;
}
console.timeEnd('for');
console.time('for-of');
for (const num of arr) {
num * 2;
}
console.timeEnd('for-of');
console.time('forEach');
arr.forEach(num => num * 2);
console.timeEnd('forEach');
console.time('map');
arr.map(num => num * 2);
console.timeEnd('map');
All methods perform the same operation: multiplying by 2. We only measure execution time.
| Method | Speed | Clean Syntax |
| for | 🏆 Fastest | High |
| while | Very Fast | Medium |
| for...of | Medium | High |
| forEach | Slow | High |
| map | Slow | High |
| reduce | Slowest | Medium |
| for...in | ❌ Bad for arrays | Medium |
The classic for loop has the lowest abstraction level, and JavaScript engines (like V8 in Chrome) optimize it heavily. Additionally, it avoids callbacks, reducing function call overhead.
| Scenario | Recommended Method |
| Maximum speed | for or while |
| Clean and readable code | map, forEach |
| Value accumulation | reduce |
| Dynamic break/continue | for, for...of |
| Functional style | map, filter, reduce |
await array.forEach(async (item) => {
await something(item); // ❌ async won't work as expected
});
Use for...of with async/await instead:
for (const item of array) {
await something(item); // ✅ async works
}
When working with large arrays or performance-critical code, use for or while. If readability is more important and data size is small, prefer map, forEach, or reduce. For performance-sensitive applications (e.g., games, visualizations, real-time dashboards), always benchmark different approaches.