2011-07-14 8 views
0

誰もが2つの配列を反復処理してIDを互いに一致させる方法を知っていますか?私はidhouseholdsという一意のIDを持つArray - @householdを持っていて、@events配列のIDを使って、@events配列から@household配列の終わりまでフィールドにタグを付けるとします。2つの配列を一度に反復する

+0

これらの配列の内容については、明確にする必要があります。 – Phrogz

答えて

0

これはどう...

@household.each do |household_elt| 
matching_event = @events.select { |event| event.id == household_elt.idhouseholds }.first 
#do the tagging with matching_event 
end 
+0

しかし、家庭とイベントの間に関連がある場合は、最初にこのタグ付けを行う必要はありません。 – dexter

4

あなたが探していることは2つの配列の'natural join'であるように思えます。その場合

は、ここにあなたのために働くかもしれない何かである:

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

上記のコードは(ALLに[世帯、イベント]のペアを与える)2つの配列のCartesian productを行い、その後、フィルタリングし一致するidを持つ要素

もちろん、idフィールドを使用して関連付けを行っている場合は、これを行う必要はありません。これはORMレイヤーによって処理されます。

+1

'@ household.product(@events).select {| x | x [0] .id == x [1] .id} 'は少し短いです – DNNX

関連する問題