Bird
Raised Fist0
DSA Typescriptprogramming

Array Traversal Patterns in DSA Typescript

Choose your learning style10 modes available
Mental Model
Go through each item in the list one by one to check or change it.
Analogy: Like walking down a line of mailboxes, opening each one to see what's inside.
Index: 0   1   2   3   4
Array: [5]->[3]->[8]->[1]->[7]
          ↑
Dry Run Walkthrough
Input: array: [5, 3, 8, 1, 7], goal: print each element
Goal: Visit every element in the array and print it in order
Step 1: Start at index 0, read value 5
Index: 0 ↑ 1  2  3  4
Array: [5]->[3]->[8]->[1]->[7]
Why: We begin at the first element to start traversal
Step 2: Move to index 1, read value 3
Index: 0  1 ↑ 2  3  4
Array: [5]->[3]->[8]->[1]->[7]
Why: Next element to visit in order
Step 3: Move to index 2, read value 8
Index: 0  1  2 ↑ 3  4
Array: [5]->[3]->[8]->[1]->[7]
Why: Continue visiting elements one by one
Step 4: Move to index 3, read value 1
Index: 0  1  2  3 ↑ 4
Array: [5]->[3]->[8]->[1]->[7]
Why: Keep moving forward to cover all elements
Step 5: Move to index 4, read value 7
Index: 0  1  2  3  4 ↑
Array: [5]->[3]->[8]->[1]->[7]
Why: Last element to visit in the array
Result:
Index: 0  1  2  3  4 ↑
Array: [5]->[3]->[8]->[1]->[7]
Printed values: 5 3 8 1 7
Annotated Code
DSA Typescript
class ArrayTraversal {
  static traverseAndPrint(arr: number[]): void {
    for (let i = 0; i < arr.length; i++) {
      console.log(arr[i]);
    }
  }
}

const inputArray = [5, 3, 8, 1, 7];
ArrayTraversal.traverseAndPrint(inputArray);
for (let i = 0; i < arr.length; i++) {
loop through each index from start to end to visit every element
console.log(arr[i]);
print the current element at index i
OutputSuccess
5 3 8 1 7
Complexity Analysis
Time: O(n) because we visit each of the n elements once
Space: O(1) because we only use a few variables regardless of input size
vs Alternative: Compared to random access, traversal is simple and direct with no extra cost
Edge Cases
empty array
loop does not run, nothing is printed
DSA Typescript
for (let i = 0; i < arr.length; i++) {
array with one element
prints the single element once
DSA Typescript
for (let i = 0; i < arr.length; i++) {
When to Use This Pattern
When you need to look at or process every item in a list in order, use array traversal to visit each element one by one.
Common Mistakes
Mistake: Using <= instead of < in the loop condition causing out-of-bounds error
Fix: Change loop condition to i < arr.length to stay within valid indexes
Mistake: Modifying the array length inside the loop causing unexpected behavior
Fix: Avoid changing array size during traversal or adjust loop accordingly
Summary
It goes through each element in an array one by one.
Use it when you want to check or change every item in a list.
Remember to start at the first element and move forward until the end.

Practice

(1/5)
1. What does the following TypeScript code do?
for (let i = 0; i < arr.length; i++) { console.log(arr[i]); }
easy
A. Prints each element of the array from start to end
B. Prints the array elements in reverse order
C. Prints only the first element of the array
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: Analyze the console.log statement

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

    Prints each element of the array from start to end -> Option A
  4. Quick Check:

    Standard forward traversal prints all elements [OK]
Hint: For loop from 0 to length prints array forward [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 TypeScript?
easy
A. for (let i = 0; i < arr.length; i++) { console.log(arr[i]); }
B. for (let item of arr) { console.log(item); }
C. for (let i in arr) { console.log(arr[i]); }
D. for (let i = arr.length; i >= 0; i--) { console.log(arr[i]); }

Solution

  1. Step 1: Identify for-of loop syntax

    The for-of loop syntax is: for (let element of array) { ... }
  2. Step 2: Match with options

    for (let item of arr) { console.log(item); } matches this syntax and prints each element directly.
  3. Final Answer:

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

    for-of loops use 'of' keyword to iterate elements [OK]
Hint: for-of loops use 'of' keyword to get elements directly [OK]
Common Mistakes:
  • Using for-in to get elements instead of indexes
  • Confusing for-of with traditional for loop syntax
  • Using wrong loop conditions
3. What will be the output of the following code?
const arr = [10, 20, 30];
let result = [];
for (let i = arr.length - 1; i >= 0; i--) {
  result.push(arr[i]);
}
console.log(result);
medium
A. SyntaxError
B. [10, 20, 30]
C. [undefined, 30, 20]
D. [30, 20, 10]

Solution

  1. Step 1: Understand the loop direction

    The loop starts at index 2 (arr.length - 1) and decrements to 0, traversing the array backward.
  2. Step 2: Track elements pushed to result

    Elements pushed in order: arr[2] = 30, arr[1] = 20, arr[0] = 10, so result = [30, 20, 10].
  3. Final Answer:

    [30, 20, 10] -> Option D
  4. Quick Check:

    Reverse traversal collects elements backward [OK]
Hint: Loop from length-1 down to 0 reverses array [OK]
Common Mistakes:
  • Assuming forward order output
  • Confusing index bounds causing undefined
  • Thinking it causes syntax error
4. Identify the error in the following code snippet that attempts 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. The loop condition should be i < arr.length, not i <= arr.length
B. The variable i should start from 1, not 0
C. The array should be traversed using for-of loop only
D. There is no error; code works fine

Solution

  1. Step 1: Check loop condition

    The loop runs while i <= arr.length, which means i can be equal to arr.length (3), an invalid index.
  2. Step 2: Understand array indexing

    Array indexes go from 0 to arr.length - 1, so accessing arr[3] is undefined and may cause unexpected output.
  3. Final Answer:

    The loop condition should be i < arr.length, not i <= arr.length -> Option A
  4. Quick Check:

    Array indexes go from 0 to length-1 [OK]
Hint: Loop index must be less than length, not less or equal [OK]
Common Mistakes:
  • Using <= instead of < in loop condition
  • Starting index at 1 instead of 0
  • Thinking for-of is mandatory
5. Given an array arr of numbers, which code snippet correctly creates a new array containing only the even numbers from arr using array traversal?
hard
A. const evens = []; for (let x of arr) { if (x % 2 === 0) evens.push(x); }
B. const evens = arr.filter(x => x % 2 === 0);
C. All of the above
D. const evens = []; for (let i = 0; i < arr.length; i++) { if (arr[i] % 2 === 0) evens.push(arr[i]); }

Solution

  1. Step 1: Analyze const evens = []; for (let i = 0; i < arr.length; i++) { if (arr[i] % 2 === 0) evens.push(arr[i]); }

    Uses a for loop with index to check each element and push even numbers. Correct traversal and filtering.
  2. Step 2: Analyze const evens = arr.filter(x => x % 2 === 0); and C

    const evens = arr.filter(x => x % 2 === 0); uses filter method which internally traverses array and filters evens. const evens = []; for (let x of arr) { if (x % 2 === 0) evens.push(x); } uses for-of loop to traverse and filter evens. Both are correct.
  3. Step 3: Combine understanding

    All three options correctly traverse and select even numbers.
  4. Final Answer:

    All of the above -> Option C
  5. Quick Check:

    Multiple traversal patterns can filter arrays correctly [OK]
Hint: Any loop or filter method can select elements by condition [OK]
Common Mistakes:
  • Assuming only for loop works
  • Confusing filter syntax
  • Forgetting to check modulo condition
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