Итерация по двум массивам одновременно - PullRequest
0 голосов
/ 14 июля 2011

Кто-нибудь знает, как я могу перебрать два массива и сопоставить идентификаторы от одного к другому? У меня есть Array - @household с уникальным идентификатором idhouseholds, и я хочу пометить поле из моего массива @events до конца массива @household, используя идентификатор из массива @events.

Ответы [ 2 ]

4 голосов
/ 14 июля 2011

Кажется, что вы ищете 'естественное соединение' из двух массивов.

В таком случае, вот что может сработать для вас:

@household.product(@events).each.map { |x| x if x[0].id == x[1].id }.compact

Приведенный выше код делает декартово произведение из двух массивов (что дает ВСЕ пары [домашнее хозяйство, событие]), а затем отфильтровывает элементы с соответствующими идентификаторами.

Конечно, если у вас была ассоциация, использующая поле id, вам не нужно было бы этого делать, это было бы обработано слоем ORM.

0 голосов
/ 14 июля 2011

Как насчет этого ..

@household.each do |household_elt|
 matching_event = @events.select { |event| event.id == household_elt.idhouseholds }.first
 #do the tagging with matching_event
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...