Bird
Raised Fist0
DSA Javascriptprogramming~5 mins

Array Traversal Patterns in DSA Javascript - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Array Traversal Patterns
O(n)
Understanding Time Complexity

When we go through each item in an array, we want to know how long it takes as the array grows.

We ask: How does the time to check every element change when the array gets bigger?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


const arr = [1, 2, 3, 4, 5];
let sum = 0;
for (let i = 0; i < arr.length; i++) {
  sum += arr[i];
}
console.log(sum);
    

This code goes through each number in the array and adds them up.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Accessing each element in the array once.
  • How many times: Exactly once for each element, so as many times as the array length.
How Execution Grows With Input

As the array gets bigger, the number of steps grows in a straight line with it.

Input Size (n)Approx. Operations
1010 steps (adding 10 numbers)
100100 steps (adding 100 numbers)
10001000 steps (adding 1000 numbers)

Pattern observation: The work grows evenly as the array size grows.

Final Time Complexity

Time Complexity: O(n)

This means the time to finish grows directly with the number of items in the array.

Common Mistake

[X] Wrong: "Since the loop is simple, it must be constant time O(1)."

[OK] Correct: Even a simple loop runs once per item, so time grows with array size, not fixed.

Interview Connect

Understanding how simple loops scale helps you explain and improve code clearly in interviews.

Self-Check

What if we nested another loop inside to compare each element with every other? How would the time complexity change?

Practice

(1/5)
1. What does the following code do?
for (let i = 0; i < arr.length; i++) { console.log(arr[i]); }
easy
A. Prints only the first element of the array
B. Prints the array elements in reverse order
C. Prints each element of the array from first to last
D. Prints the length of the array

Solution

  1. Step 1: Understand the loop range

    The loop starts at 0 and runs while i is less than arr.length, so it covers all valid indexes.
  2. Step 2: Check the action inside the loop

    Each iteration prints arr[i], which is the element at index i, so all elements are printed in order.
  3. Final Answer:

    Prints each element of the array from first to last -> Option C
  4. Quick Check:

    Loop from 0 to length prints all elements [OK]
Hint: Loop from 0 to length prints all elements in order [OK]
Common Mistakes:
  • Thinking it prints in reverse order
  • Assuming it prints only one element
  • Confusing index with value
2. Which of the following is the correct syntax to traverse an array arr using a for...of loop in JavaScript?
easy
A. for (let element of arr) { console.log(element); }
B. for (let i = 0; i < arr.length; i++) { console.log(arr[i]); }
C. for (let i in arr) { console.log(arr[i]); }
D. for (let i = 0; i <= arr.length; i++) { console.log(arr[i]); }

Solution

  1. Step 1: Identify the for...of syntax

    The for...of loop iterates over values directly, so syntax is for (let element of arr).
  2. Step 2: Check each option

    for (let element of arr) { console.log(element); } matches the correct for...of syntax. Others use different loops or incorrect conditions.
  3. Final Answer:

    for (let element of arr) { console.log(element); } -> Option A
  4. Quick Check:

    for...of loops over values [OK]
Hint: Use 'for (let x of arr)' to loop over values directly [OK]
Common Mistakes:
  • Using 'for...in' instead of 'for...of'
  • Using <= instead of < in loop condition
  • Confusing index and element in loops
3. What is the output of the following code?
const arr = [10, 20, 30];
let result = '';
for (let i = arr.length - 1; i >= 0; i--) {
  result += arr[i] + ' ';
}
console.log(result.trim());
medium
A. 10 20 30
B. 30 20 10
C. SyntaxError
D. 30 10 20

Solution

  1. Step 1: Understand the loop direction

    The loop starts at index 2 (arr.length - 1) and decrements to 0, so it goes backward through the array.
  2. Step 2: Trace the concatenation

    Elements are added in order: arr[2] = 30, arr[1] = 20, arr[0] = 10, separated by spaces.
  3. Final Answer:

    30 20 10 -> Option B
  4. Quick Check:

    Loop backward prints reversed array [OK]
Hint: Loop from length-1 down to 0 prints array in reverse [OK]
Common Mistakes:
  • Confusing loop direction and printing original order
  • Off-by-one errors in loop condition
  • Forgetting to trim trailing space
4. Find the error in this code snippet that tries to print all elements of arr:
const arr = [1, 2, 3];
for (let i = 0; i <= arr.length; i++) {
  console.log(arr[i]);
}
medium
A. Using <= causes accessing undefined element at the end
B. Missing declaration of i
C. Should use for...of loop instead
D. Array length is incorrect

Solution

  1. Step 1: Analyze loop condition

    The loop runs while i <= arr.length, so i reaches arr.length which is out of bounds.
  2. Step 2: Understand effect of out-of-bounds access

    Accessing arr[arr.length] returns undefined, so console.log prints undefined after last element.
  3. Final Answer:

    Using <= causes accessing undefined element at the end -> Option A
  4. Quick Check:

    Loop should use < not <= for array indexes [OK]
Hint: Use i < arr.length, not <=, to avoid undefined access [OK]
Common Mistakes:
  • Using <= instead of < in loop condition
  • Ignoring undefined output at end
  • Thinking array length is zero-based
5. Given a nested array arr = [[1, 2], [3, 4], [5, 6]], which code correctly prints all elements in order using nested loops?
hard
A. for (let i in arr) { for (let j in arr) { console.log(arr[i][j]); } }
B. for (let i of arr) { console.log(i); }
C. for (let i = 0; i < arr.length; i++) { console.log(arr[i]); }
D. for (let i = 0; i < arr.length; i++) { for (let j = 0; j < arr[i].length; j++) { console.log(arr[i][j]); } }

Solution

  1. Step 1: Understand nested array structure

    arr is an array of arrays, so to access each element, two loops are needed: outer for sub-arrays, inner for elements.
  2. Step 2: Check each option

    for (let i = 0; i < arr.length; i++) { for (let j = 0; j < arr[i].length; j++) { console.log(arr[i][j]); } } uses two loops with correct ranges and indexes to print each element. for (let i of arr) { console.log(i); } prints sub-arrays, not elements. for (let i = 0; i < arr.length; i++) { console.log(arr[i]); } prints sub-arrays. for (let i in arr) { for (let j in arr) { console.log(arr[i][j]); } } incorrectly loops inner array length.
  3. Final Answer:

    for (let i = 0; i < arr.length; i++) { for (let j = 0; j < arr[i].length; j++) { console.log(arr[i][j]); } } -> Option D
  4. Quick Check:

    Nested loops needed for nested arrays [OK]
Hint: Use nested loops: outer for arrays, inner for elements [OK]
Common Mistakes:
  • Using single loop prints sub-arrays, not elements
  • Using wrong inner loop length
  • Confusing for...in with for...of in nested loops
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard