一次迭代两个数组

时间:2011-07-14 12:04:16

标签: ruby activerecord

有谁知道我如何迭代两个数组并将id从一个匹配到另一个?我有一个数组 - @ household,它有一个名为idhouseholds的唯一id,并希望使用来自@events数组的id将@events数组中的字段标记到@household数组的末尾。

2 个答案:

答案 0 :(得分:4)

您正在寻找的是两个阵列的'natural join'

在这种情况下,这可能适合您:

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

上面的代码执行两个数组的Cartesian product(它给出所有[家庭,事件]对),然后过滤掉匹配id的元素。

当然,如果你有一个使用id字段的关联,你不需要这样做,它将由ORM层处理。

答案 1 :(得分:0)

这个怎么样..

@household.each do |household_elt|
 matching_event = @events.select { |event| event.id == household_elt.idhouseholds }.first
 #do the tagging with matching_event
end
相关问题