mirror of
https://github.com/jbranchaud/til
synced 2026-01-09 18:18:02 +00:00
Add Exclude Values From An Array as a Ruby til
This commit is contained in:
41
ruby/exclude-values-from-an-array.md
Normal file
41
ruby/exclude-values-from-an-array.md
Normal file
@@ -0,0 +1,41 @@
|
||||
# Exclude Values From An Array
|
||||
|
||||
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`](https://ruby-doc.org/core-3.0.0/Array.html#method-i-compact).
|
||||
|
||||
```ruby
|
||||
> [1,nil,:what,4].compact
|
||||
#=> [1, :what, 4]
|
||||
```
|
||||
|
||||
If you want to exclude `nil` values and some other named value, you could use
|
||||
[`#filter`](https://ruby-doc.org/core-3.0.0/Array.html#method-i-filter) or
|
||||
[`#reject`](https://ruby-doc.org/core-3.0.0/Array.html#method-i-reject).
|
||||
|
||||
```ruby
|
||||
> [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:
|
||||
[`#-`](https://ruby-doc.org/core-3.0.0/Array.html#method-i-2D).
|
||||
|
||||
```ruby
|
||||
> [1,nil,:what,nil,5] - [:what,nil]
|
||||
#=> [1, 5]
|
||||
```
|
||||
|
||||
Or the spelled out
|
||||
[`#difference`](https://ruby-doc.org/core-3.0.0/Array.html#method-i-difference)
|
||||
method.
|
||||
|
||||
```ruby
|
||||
> [1,nil,:what,nil,5].difference([:what,nil])
|
||||
#=> [1, 5]
|
||||
```
|
||||
Reference in New Issue
Block a user