I can do:
@items = @items.select {|i| i.color == 'blue'}
@items = @items.select {|i| i.color == 'blue' || i.color == 'red'}
What if I am given an unknown amount of colors and I want to select them all? i.e.
['red','blue','green','purple']
# or
['blue','red']
I've been working on a mess of code that creates several temporary arrays and then merges or flattens them into one, but I'm really unhappy with it.
Try this:
colors = ['red','blue','green','purple']
@items = @items.select { |i| colors.include?(i.color) }
You might also want to consider this instead, for in-place changes:
@items.reject! { |i| !colors.include?(i.color) }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With