2012-03-10 4 views
0

:私は2を持っている必要があり、最終的な時
(1つのキーと2つの項目を含む)
b = [{:d=7},{:d=8},...](3つのキーとの2つの項目を含む) a = [{:a=1,"b=2,:c=3},{:a=4,:b=5,:c=6},..]ハードケース(ルビー)

4つのキーを持つ項目:
a = [{:a=1,:b=2,:c=3,:d=7},{:a=4,:b=5,:c=6,:d=8},..]

助けてくださいには、次の操作を実行しようとした:

a.each do |item| 
    b.each do |view| 
    item.merge!(view)  
    end 
end 

最終的に私は2つのアイテムに配列bのアイテム1と同じ日付を持っています(d = 7)。

+1

{a = 1、b = 2、c = 3}このハッシュは有効ですか?おそらくあなたは{:a => 1、:b => 2、:c => 3} – megas

答えて

4

まず、aとbの定義はあまり有効ではありません。シンボルまたは文字列のいずれかを使用する必要があります。aはハッシュの有効なキーではありません。また、キーをvalueにするには、=>を使用する必要があります。 - あなたが望むものを正確に

a = [{:a=>1,:b=>2,:c=>3},{:a=>4,:b=>5,:c=>6}] 
b =[{:d=>7}, {:d=>8}] 
a.zip(b) do |x,y| 
    x.merge!(y) 
end 

Zipはaとbの要素の各マッチングペアの操作を実行します。ここでは はあなたが何をしたい達成できる方法です。

+0

を意味しています。ありがとう、私は私の質問を修正します!非常に役立ちます! – jagga99

+1

あなたの 'zip'の最後に' .map'がありません。 –

+0

私は私のirbでそれを試してみました。貼り付けたコードの実行後、aの内容は '[{:c => 3、:a => 1、:b => 2、:d => 7}、{:c => 6、 a => 4、:b => 5、:d => 8}] 'となります。 –