具有多个条件ruby的数组选择

时间:2009-12-18 06:19:25

标签: ruby arrays

我能做到:

@items = @items.select {|i| i.color == 'blue'}
@items = @items.select {|i| i.color == 'blue' || i.color == 'red'}

如果给出未知数量的颜色并且我想要全部选择它会怎么样?即。

['red','blue','green','purple']
# or
['blue','red']

我一直在研究一堆代码,这些代码创建了几个临时数组,然后将它们合并或展平成一个,但我真的很不高兴。

2 个答案:

答案 0 :(得分:20)

试试这个:

colors = ['red','blue','green','purple']
@items = @items.select { |i| colors.include?(i.color) }

对于就地更改,您可能还需要考虑这一点:

@items.reject! { |i| !colors.include?(i.color) }

答案 1 :(得分:1)

不确定我完全理解你的问题,但会对你有用吗?

colors_array = ['blue','red','whatever']
@items = @items.select {|i| colors_array.include?(i)}