Bird
Raised Fist0
Rubyprogramming~10 mins

Array modification (push, pop, shift, unshift) in Ruby - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Array modification (push, pop, shift, unshift)
Start with array
↓
Choose operation
↓
Add end
↓
Array updated
↓
End
Start with an array, pick one of four operations: push adds to end, pop removes from end, shift removes from start, unshift adds to start, then array updates.
Execution Sample
Ruby
arr = [1, 2, 3]
arr.push(4)
arr.pop
arr.shift
arr.unshift(0)
Modify array by adding/removing elements at start or end using push, pop, shift, and unshift.
Execution Table
StepOperationArray BeforeActionArray After
1Initialize[]Set arr = [1, 2, 3][1, 2, 3]
2push(4)[1, 2, 3]Add 4 at end[1, 2, 3, 4]
3pop[1, 2, 3, 4]Remove last element (4)[1, 2, 3]
4shift[1, 2, 3]Remove first element (1)[2, 3]
5unshift(0)[2, 3]Add 0 at start[0, 2, 3]
💡 All operations done, final array is [0, 2, 3]
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4After Step 5
arr[][1, 2, 3][1, 2, 3, 4][1, 2, 3][2, 3][0, 2, 3]
Key Moments - 3 Insights
Why does pop remove the last element, but shift removes the first?
Pop always removes from the end of the array (see step 3), while shift removes from the start (see step 4). They target opposite ends.
What happens to the array length after unshift compared to push?
Both add one element, increasing length by 1. Push adds at the end (step 2), unshift adds at the start (step 5).
If the array is empty, what happens when pop or shift is called?
Pop or shift on an empty array returns nil and does not change the array size.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the array after step 3 (pop)?
A[1, 2, 3]
B[1, 2, 3, 4]
C[2, 3]
D[0, 2, 3]
💡 Hint
Check the 'Array After' column for step 3 in the execution_table.
At which step is the element '1' removed from the array?
AStep 2 (push)
BStep 4 (shift)
CStep 3 (pop)
DStep 5 (unshift)
💡 Hint
Look at the 'Action' column in the execution_table to see when '1' is removed.
If we replace unshift(0) with unshift(5), what will be the final array after step 5?
A[0, 2, 3]
B[2, 3, 5]
C[5, 2, 3]
D[1, 2, 3]
💡 Hint
Unshift adds the given element at the start of the array (see step 5).
Concept Snapshot
Array modification methods:
- push(value): add value at end
- pop: remove last element
- shift: remove first element
- unshift(value): add value at start
Each changes array size accordingly.
Full Transcript
This visual trace shows how Ruby arrays change with push, pop, shift, and unshift. We start with arr = [1, 2, 3]. Push(4) adds 4 at the end making [1, 2, 3, 4]. Pop removes last element 4 returning to [1, 2, 3]. Shift removes first element 1 resulting in [2, 3]. Unshift(0) adds 0 at the start, finalizing [0, 2, 3]. Each step updates the array and changes its size. Pop and shift remove elements from opposite ends. Push and unshift add elements at opposite ends. If pop or shift is called on an empty array, it returns nil and array stays empty.

Practice

(1/5)
1. Which Ruby array method adds an element to the end of the array?
easy
A. shift
B. pop
C. push
D. unshift

Solution

  1. Step 1: Understand the purpose of push

    The push method adds an element to the end of an array.
  2. Step 2: Compare with other methods

    pop removes the last element, shift removes the first, and unshift adds to the front.
  3. Final Answer:

    push -> Option C
  4. Quick Check:

    push adds to end [OK]
Hint: Remember: push = add end, unshift = add front [OK]
Common Mistakes:
  • Confusing push with pop
  • Mixing shift and unshift
  • Thinking pop adds elements
2. Which of the following is the correct syntax to remove the first element from an array arr in Ruby?
easy
A. arr.shift()
B. arr.pop()
C. arr.unshift()
D. arr.push()

Solution

  1. Step 1: Identify method to remove first element

    The shift method removes and returns the first element of an array.
  2. Step 2: Check syntax correctness

    Calling arr.shift() correctly removes the first element.
  3. Final Answer:

    arr.shift() -> Option A
  4. Quick Check:

    shift removes first element [OK]
Hint: shift removes first, pop removes last [OK]
Common Mistakes:
  • Using pop to remove first element
  • Calling unshift to remove elements
  • Forgetting parentheses
3. What will be the output of the following Ruby code?
arr = [1, 2, 3]
arr.push(4)
arr.shift
p arr
medium
A. [1, 2, 3]
B. [1, 2, 3, 4]
C. [4, 1, 2, 3]
D. [2, 3, 4]

Solution

  1. Step 1: Execute push(4) on array

    Adding 4 to the end changes array from [1, 2, 3] to [1, 2, 3, 4].
  2. Step 2: Execute shift to remove first element

    Removing first element (1) results in [2, 3, 4].
  3. Final Answer:

    [2, 3, 4] -> Option D
  4. Quick Check:

    push adds end, shift removes front = [2, 3, 4] [OK]
Hint: push adds end, shift removes front, watch order [OK]
Common Mistakes:
  • Ignoring shift effect
  • Thinking push adds front
  • Confusing pop with shift
4. The following Ruby code is intended to add 0 to the front of the array nums and then remove the last element. What is the error?
nums = [1, 2, 3]
nums.unshift(0)
nums.pop()
medium
A. No error; code works correctly
B. pop() should be called before unshift()
C. unshift() does not add elements to array
D. pop() removes the first element, not the last

Solution

  1. Step 1: Understand unshift(0) effect

    This adds 0 to the front, changing [1, 2, 3] to [0, 1, 2, 3].
  2. Step 2: Understand pop() effect

    This removes the last element (3), resulting in [0, 1, 2].
  3. Final Answer:

    No error; code works correctly -> Option A
  4. Quick Check:

    unshift adds front, pop removes last = correct [OK]
Hint: unshift adds front, pop removes last, order matters [OK]
Common Mistakes:
  • Thinking pop removes first element
  • Believing unshift does not add
  • Swapping order of operations unnecessarily
5. Given the array data = [10, 20, 30], which sequence of method calls will result in [5, 10, 20]?
hard
A. data.push(5).shift()
B. data.unshift(5).pop()
C. data.shift().unshift(5)
D. data.pop().unshift(5)

Solution

  1. Step 1: Apply unshift(5) to add 5 at front

    Array changes from [10, 20, 30] to [5, 10, 20, 30].
  2. Step 2: Apply pop() to remove last element

    Removing last element (30) results in [5, 10, 20].
  3. Final Answer:

    data.unshift(5).pop() -> Option B
  4. Quick Check:

    unshift adds front, pop removes last = [5, 10, 20] [OK]
Hint: Add front with unshift, then remove last with pop [OK]
Common Mistakes:
  • Using push instead of unshift
  • Removing first element instead of last
  • Chaining methods incorrectly
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