Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 具有多个条件的数组选择_Ruby_Arrays - Fatal编程技术网

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

Ruby 具有多个条件的数组选择,ruby,arrays,Ruby,Arrays,我可以做到: @items = @items.select {|i| i.color == 'blue'} @items = @items.select {|i| i.color == 'blue' || i.color == 'red'} 如果给我一个未知数量的颜色,我想把它们全部选出来怎么办?i、 e ['red','blue','green','purple'] # or ['blue','red'] 我一直在编写一堆代码,这些代码创建了几个临时数组,然后将它们合并或展平为一个数组,但

我可以做到:

@items = @items.select {|i| i.color == 'blue'}
@items = @items.select {|i| i.color == 'blue' || i.color == 'red'}
如果给我一个未知数量的颜色,我想把它们全部选出来怎么办?i、 e

['red','blue','green','purple']
# or
['blue','red']
我一直在编写一堆代码,这些代码创建了几个临时数组,然后将它们合并或展平为一个数组,但我对此非常不满意。

尝试以下方法:

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

您可能还想考虑这一点,对于现成的更改:

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

我不确定我是否完全理解你的问题,但是否适合你

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

太棒了,第二个很完美。