【问题标题】:Array select with multiple conditions ruby具有多个条件红宝石的数组选择
【发布时间】:2009-12-18 06:19:25
【问题描述】:

我能做到:

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

如果给了我未知数量的颜色并且我想全部选择它们怎么办?即

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

我一直在处理一堆乱七八糟的代码,这些代码创建了几个临时数组,然后将它们合并或展平为一个,但我真的很不满意。

【问题讨论】:

    标签: ruby arrays


    【解决方案1】:

    试试这个:

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

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

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

    【讨论】:

    • 厉害,第二个就完美了。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-07-03
      • 2012-03-01
      • 1970-01-01
      • 2014-02-02
      • 2012-05-30
      • 2011-01-15
      • 1970-01-01
      • 2012-09-13
      • 1970-01-01
      相关资源
      最近更新 更多