← Back to all TILs

Exclude Values From An Array

ruby Written February 10, 2021

In true Ruby fashion, there are all sorts of ways to exclude values from an array.

If you just want to exclude nil values, you can use #compact.

> [1,nil,:what,4].compact
#=> [1, :what, 4]

If you want to exclude nil values and some other named value, you could use #filter or #reject.

> [1,nil,:what,4].filter { |val| !val.nil? && val != :what }
#=> [1, 4]
> [1,nil,:what,4].reject { |val| val.nil? || val == :what }
#=> [1, 4]

The filter is clumsy and heavy-handed for this sort of example. A really terse way of doing the same thing is with set difference: #-.

> [1,nil,:what,nil,5] - [:what,nil]
#=> [1, 5]

Or the spelled out #difference method.

> [1,nil,:what,nil,5].difference([:what,nil])
#=> [1, 5]

Other posts like this