Выбор массива с несколькими условиями ruby - PullRequest
9 голосов
/ 18 декабря 2009

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

@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 ]

20 голосов
/ 18 декабря 2009

Попробуйте это:

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

Возможно, вы захотите рассмотреть это вместо изменений на месте:

@items.reject! { |i| !colors.include?(i.color) }
1 голос
/ 18 декабря 2009

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

colors_array = ['blue','red','whatever']
@items = @items.select {|i| colors_array.include?(i)}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...