Выбор массива с помощью нескольких рубина условий

Я могу сделать:

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

Что, если мне дают неизвестное количество цветов и я хочу выбрать их всех? т.е.

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

Я работал над путаницей кода, который создает несколько временных массивов и затем объединяет или сглаживает их в одного, но я действительно недоволен им.

10
задан Ryan Florence 18 December 2009 в 06:19
поделиться

2 ответа

Попробуйте следующее:

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

Вы также можете рассмотреть это вместо этого, для на месте изменения:

@items.reject! { |i| !colors.include?(i.color) }
21
ответ дан 3 December 2019 в 17:59
поделиться

не уверен, что я полностью понимаю ваш вопрос, но подойдет ли вам?

colors_array = ['blue','red','whatever']
@items = @items.select {|i| colors_array.include?(i)}
1
ответ дан 3 December 2019 в 17:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: