Common array operations in Javascript - Time & Space Complexity
When working with arrays, it is important to know how long common operations take as the array grows.
We want to understand how the time to do things like adding, searching, or removing items changes with array size.
Analyze the time complexity of the following code snippet.
const arr = [1, 2, 3, 4, 5];
// Add an item at the end
arr.push(6);
// Find an item
const found = arr.includes(3);
// Remove first item
arr.shift();
This code adds an item to the end, checks if an item exists, and removes the first item from the array.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Searching through the array with
includesand shifting elements withshift. - How many times:
includeschecks each element until it finds a match or reaches the end;shiftmoves all elements one step forward.
Explain the growth pattern intuitively.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | Push: 1, Includes: up to 10, Shift: up to 9 |
| 100 | Push: 1, Includes: up to 100, Shift: up to 99 |
| 1000 | Push: 1, Includes: up to 1000, Shift: up to 999 |
Pattern observation: Adding at the end stays quick, but searching and removing from the front take longer as the array grows.
Time Complexity: O(n)
This means the time to search or remove from the front grows roughly in direct proportion to the array size.
[X] Wrong: "Adding or removing items anywhere in the array always takes the same short time."
[OK] Correct: Adding at the end is fast, but removing from the front or searching requires checking or moving many items, so it takes longer as the array grows.
Understanding how common array operations scale helps you write efficient code and explain your choices clearly in interviews.
"What if we used a linked list instead of an array? How would the time complexity of removing the first item change?"
Practice
Solution
Step 1: Understand array methods for adding/removing items
push() adds items to the end, pop() removes from the end, shift() removes from the start, unshift() adds to the start.Step 2: Identify the method that adds to the end
push() is the method that adds new items at the end of the array.Final Answer:
push() -> Option CQuick Check:
push() adds item at end [OK]
- Confusing push() with pop()
- Using shift() to add items
- Using unshift() to add at end
arr?Solution
Step 1: Recall array methods for removing items
pop() removes last item, shift() removes first item, push() adds last, unshift() adds first.Step 2: Choose method that removes first item
shift() removes the first item from the array.Final Answer:
arr.shift() -> Option AQuick Check:
shift() removes first item [OK]
- Using pop() to remove first item
- Using push() or unshift() to remove items
- Confusing shift() with unshift()
const fruits = ['apple', 'banana', 'cherry'];
const index = fruits.indexOf('banana');
if (index !== -1) {
fruits.splice(index, 1);
}
console.log(fruits);Solution
Step 1: Find the index of 'banana' in the array
indexOf('banana') returns 1 because 'banana' is at position 1.Step 2: Remove 'banana' using splice
splice(1, 1) removes 1 item at index 1, so 'banana' is removed.Final Answer:
['apple', 'cherry'] -> Option DQuick Check:
Removed 'banana' from array [OK]
- Not checking index before splice
- Using splice with wrong index
- Expecting splice to return new array
const colors = ['red', 'green', 'blue'];
const index = colors.indexOf('orange');
colors.splice(index, 1);
console.log(colors);Solution
Step 1: Check indexOf result for 'orange'
Since 'orange' is not in the array, indexOf returns -1.Step 2: Understand splice behavior with negative index
splice(-1, 1) removes the last item, so 'blue' is removed unexpectedly.Final Answer:
indexOf returns -1 if item not found, causing splice to remove last item -> Option AQuick Check:
Check index before splice to avoid removing wrong item [OK]
- Not checking if index is -1
- Using includes() instead of indexOf for index
- Assuming splice can't remove by index
nums = [1, 2, 3, 4, 5], which code snippet correctly removes all even numbers from the array?Solution
Step 1: Understand filtering even numbers
To remove even numbers, keep only numbers where n % 2 !== 0 (odd numbers).Step 2: Check each option
nums.filter(n => n % 2 !== 0) keeps odd numbers, removing all evens. nums.filter(n => n % 2 === 0) keeps evens. nums.splice(1, 2) removes items at fixed indexes. nums.pop() twice removes only the last two items.Final Answer:
nums = nums.filter(n => n % 2 !== 0); -> Option BQuick Check:
filter odd numbers to remove even [OK]
- Using filter condition backwards
- Using splice without index knowledge
- Using pop to remove specific items
Ready to prove it?
Pass the test and this pattern moves unknown
