We use iteration to look at each item in a list one by one. This helps us do something with every item, like printing or changing it.
Iterating over arrays in Javascript
const array = [item1, item2, item3]; // Using for loop for (let index = 0; index < array.length; index++) { const currentItem = array[index]; // do something with currentItem } // Using for...of loop for (const item of array) { // do something with item } // Using forEach method array.forEach((item, index) => { // do something with item });
The for loop gives you the index and item.
The for...of loop is simpler when you only need the item.
const fruits = ['apple', 'banana', 'cherry']; for (let i = 0; i < fruits.length; i++) { console.log(fruits[i]); }
const fruits = ['apple', 'banana', 'cherry']; for (const fruit of fruits) { console.log(fruit); }
const fruits = ['apple', 'banana', 'cherry']; fruits.forEach((fruit, index) => { console.log(`${index}: ${fruit}`); });
const emptyArray = []; for (const item of emptyArray) { console.log(item); } // No output because the array is empty
This program shows three ways to go through an array and print each color with its position.
const colors = ['red', 'green', 'blue']; console.log('Colors before iteration:'); console.log(colors); console.log('\nIterating with for loop:'); for (let index = 0; index < colors.length; index++) { console.log(`Color at index ${index} is ${colors[index]}`); } console.log('\nIterating with for...of loop:'); for (const color of colors) { console.log(`Color: ${color}`); } console.log('\nIterating with forEach method:'); colors.forEach((color, index) => { console.log(`Index ${index}: ${color}`); });
Time complexity is O(n) because you look at each item once.
Space complexity is O(1) if you only read items, no extra storage.
Common mistake: Changing the array length while looping can cause errors.
Use forEach when you want simple code and don't need to break early.
Use for loop if you need the index or want to stop early with break.
Iteration lets you do something with every item in an array.
Use for, for...of, or forEach depending on your needs.
Remember to handle empty arrays safely.
Practice
arr using for...of?Solution
Step 1: Understand
Thefor...ofsyntaxfor...ofloop directly accesses each element in the array, not the index.Step 2: Identify the correct loop structure
for (const item of arr) { console.log(item); } usesfor (const item of arr), which correctly iterates over elements.Final Answer:
for (const item of arr) { console.log(item); } -> Option DQuick Check:
for...ofloops over elements = C [OK]
for...of to get elements directly [OK]- Confusing
for...inwithfor...of - Using index instead of element in
for...of - Trying to use
forEachsyntax insidefor...of
forEach to print each element of array nums?Solution
Step 1: Recall
forEachmethod syntaxforEachis called on the array with a function as argument:array.forEach(function(item) { ... }).Step 2: Match correct syntax
nums.forEach(function(item) { console.log(item); }); correctly usesnums.forEach(function(item) { console.log(item); });which is valid.Final Answer:
nums.forEach(function(item) { console.log(item); }); -> Option AQuick Check:
array.forEach(function)syntax = A [OK]
array.forEach(function) calls function on each item [OK]- Trying to call
forEachas a standalone function - Missing parentheses around function argument
- Using arrow syntax incorrectly without parentheses
const arr = [1, 2, 3];
let sum = 0;
for (const num of arr) {
sum += num;
}
console.log(sum);Solution
Step 1: Understand the loop and sum calculation
The loop goes through each number inarr: 1, 2, 3, adding each tosum.Step 2: Calculate the total sum
sum = 0 + 1 + 2 + 3 = 6.Final Answer:
6 -> Option AQuick Check:
Sum of [1,2,3] = 6 [OK]
- Concatenating numbers as strings instead of adding
- Not initializing sum to 0
- Using wrong loop variable
items:const items = ['a', 'b', 'c'];
for (let i = 0; i <= items.length; i++) {
console.log(items[i]);
}Solution
Step 1: Analyze the loop condition
The loop runs whilei <= items.length. Since array indices go from 0 toitems.length - 1, this causes an out-of-bounds access ati = items.length.Step 2: Correct the loop condition
Change condition toi < items.lengthto avoid accessing undefined element.Final Answer:
The loop condition should bei < items.lengthinstead ofi <= items.length-> Option CQuick Check:
Loop index must be less than length, not less or equal [OK]
i < array.length to avoid out-of-range errors [OK]- Using <= instead of < in loop condition
- Trying to declare loop variable with const
- Ignoring array length boundaries
data = [0, 1, false, 2, '', 3]. You want to create a new array containing only the truthy values by iterating over data. Which code correctly does this?Solution
Step 1: Understand truthy filtering
We want to keep only values that are truthy (not 0, false, '', null, undefined).Step 2: Check each option
const result = []; data.forEach(item => { if (item) result.push(item); }); usesforEachto push only truthy items, which is correct. const result = data.filter(item => item == true); uses== truewhich misses some truthy values like numbers. const result = []; for (let i = 0; i < data.length; i++) { result.push(data[i]); } copies all items without filtering. const result = data.map(item => item ? item : null); replaces falsy with null, not filtering.Final Answer:
const result = []; data.forEach(item => { if (item) result.push(item); }); -> Option BQuick Check:
UseforEachwith if (item) to filter truthy [OK]
forEach with if (item) to keep truthy values [OK]- Using == true instead of checking truthiness
- Copying all elements without filtering
- Using map instead of filter or manual push
Ready to prove it?
Pass the test and this pattern moves unknown
