Bird
Raised Fist0
Rubyprogramming~5 mins

Compact for removing nil values in Ruby - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the compact method do in Ruby?
It returns a new array with all nil values removed from the original array.
Click to reveal answer
beginner
How do you use compact on an array [1, nil, 2, nil, 3]?
You call [1, nil, 2, nil, 3].compact, which returns [1, 2, 3].
Click to reveal answer
intermediate
What is the difference between compact and compact!?
compact returns a new array without nil values, while compact! modifies the original array in place and returns nil if no changes were made.
Click to reveal answer
beginner
Can compact remove values other than nil?
No, compact only removes nil values. Other falsy values like false remain in the array.
Click to reveal answer
beginner
Why might you want to use compact in your Ruby code?
To clean up arrays by removing unwanted nil values, which can help avoid errors or simplify processing.
Click to reveal answer
What does [1, nil, 3].compact return?
A[3]
B[nil]
C[1, nil, 3]
D[1, 3]
What does compact! do differently than compact?
AModifies the original array in place
BReturns a new array without nils
CRemoves false values
DDoes nothing
If an array has no nil values, what does compact! return?
AThe original array
BA new array
Cnil
DAn error
Which values does compact remove?
AAll falsy values
BOnly nil values
COnly false values
Dnil and false values
How can compact help in Ruby programming?
ABy cleaning arrays from nils to avoid errors
BBy sorting arrays
CBy converting arrays to strings
DBy adding nil values
Explain how the compact method works in Ruby and when you might use it.
Think about cleaning up arrays by removing empty spots.
You got /4 concepts.
    Describe the difference between compact and compact! in Ruby.
    One changes the original array, the other does not.
    You got /3 concepts.

      Practice

      (1/5)
      1.

      What does the Ruby method compact do when called on an array?

      easy
      A. It returns a new array without any nil values.
      B. It removes all duplicate values from the array.
      C. It sorts the array in ascending order.
      D. It changes all nil values to zero.

      Solution

      1. Step 1: Understand the purpose of compact

        The compact method creates a new array by removing all nil values from the original array.
      2. Step 2: Compare with other options

        Other options describe different array methods or behaviors, but only compact removes nil values without modifying the original array.
      3. Final Answer:

        It returns a new array without any nil values. -> Option A
      4. Quick Check:

        compact removes nil values = B [OK]
      Hint: Remember: compact removes nil, keeps original unchanged [OK]
      Common Mistakes:
      • Confusing compact with uniq (removes duplicates)
      • Thinking compact sorts the array
      • Believing compact replaces nil with zero
      2.

      Which of the following is the correct syntax to remove nil values from an array arr without changing arr itself?

      arr = [1, nil, 2, nil, 3]
      easy
      A. arr.delete(nil)
      B. arr.compact!
      C. arr.remove_nil
      D. arr.compact

      Solution

      1. Step 1: Identify method that returns new array without nil

        compact returns a new array without nil values and does not modify the original array.
      2. Step 2: Understand difference with compact!

        compact! modifies the original array, so it changes arr. delete(nil) removes nil but modifies arr. remove_nil is not a Ruby method.
      3. Final Answer:

        arr.compact -> Option D
      4. Quick Check:

        compact returns new array, compact! modifies [OK]
      Hint: Use compact for new array, compact! to modify original [OK]
      Common Mistakes:
      • Using compact! when original array should stay unchanged
      • Using delete(nil) which modifies the original array
      • Assuming remove_nil is a valid Ruby method
      3.

      What is the output of the following Ruby code?

      arr = [nil, 5, nil, 10]
      new_arr = arr.compact
      puts new_arr.inspect
      puts arr.inspect
      medium
      A. [5, 10] [nil, 5, nil, 10]
      B. [nil, 5, nil, 10] [5, 10]
      C. [5, 10] [5, 10]
      D. [nil, nil] [nil, 5, nil, 10]

      Solution

      1. Step 1: Understand what compact returns

        compact returns a new array without nil values, so new_arr is [5, 10].
      2. Step 2: Check if original array changes

        The original array arr remains unchanged as [nil, 5, nil, 10].
      3. Final Answer:

        [5, 10] [nil, 5, nil, 10] -> Option A
      4. Quick Check:

        compact returns new array, original unchanged = A [OK]
      Hint: compact returns new array; original stays same [OK]
      Common Mistakes:
      • Assuming original array changes after compact
      • Confusing compact with compact! which modifies original
      • Misreading output order
      4.

      Consider this Ruby code snippet:

      arr = [1, nil, 2, nil, 3]
      arr.compact
      puts arr.inspect

      Why does the output still include nil values?

      medium
      A. Because arr was reassigned incorrectly.
      B. Because compact does not remove nil values at all.
      C. Because compact returns a new array but does not modify arr.
      D. Because puts cannot print arrays correctly.

      Solution

      1. Step 1: Understand compact behavior

        compact returns a new array without nil values but does not change the original array.
      2. Step 2: Check why arr still has nil

        Since arr.compact was called without assignment, arr remains unchanged and still contains nil.
      3. Final Answer:

        Because compact returns a new array but does not modify arr. -> Option C
      4. Quick Check:

        compact returns new array, original unchanged = D [OK]
      Hint: Use compact! or assign compact result to change original [OK]
      Common Mistakes:
      • Thinking compact modifies original array
      • Believing puts cannot print arrays properly
      • Assuming arr was reassigned automatically
      5.

      You have an array data = [nil, 0, false, '', nil, 5]. You want to remove only nil values but keep 0, false, and empty strings. Which code correctly does this?

      hard
      A. clean_data = data.reject!(&:nil?)
      B. clean_data = data.compact
      C. clean_data = data.select { |v| v }
      D. clean_data = data.delete_if { |v| v.nil? }

      Solution

      1. Step 1: Understand what compact does

        compact removes only nil values and keeps all other values including 0, false, and empty strings.
      2. Step 2: Analyze other options

        select { |v| v } removes all falsy values (nil, false, 0 is truthy in Ruby but empty string is truthy), so it removes false. reject!(&:nil?) modifies the original array. delete_if { |v| v.nil? } modifies original array.
      3. Step 3: Choose best option for new array without nil

        compact is simplest and returns new array without modifying original.
      4. Final Answer:

        clean_data = data.compact -> Option B
      5. Quick Check:

        compact removes nil only, keeps false and empty string = C [OK]
      Hint: Use compact to remove nil only, keep false and empty strings [OK]
      Common Mistakes:
      • Using select which removes false values
      • Using delete_if which modifies original array
      • Using reject! which modifies the original array
      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