私は実際には2つの配列の組み合わせである次の配列を持っています。私の目標は、従業員IDが898989である2つのハッシュを組み合わせて、それらの数を合計してそのタイプを両方に変更できるということです。私は私のハッシュの他の値を失うが、私が欲しいものに近いです下のコードを試してみました。すべての値をマップし、私が望むようにカウントを追加するような操作をする簡単な方法はありますか?Rubyは同じキーと複数の値を持つハッシュの配列を結合します
combined = [{"@rid"=>"#-2:1", "employeeId"=> "898989", "count"=>1, :type=>"wiki" },
{"@rid"=>"#-2:3", "employeeId"=> "2423213", "count"=>7, :type=>"search"},
{"@rid"=>"#-2:2", "employeeId"=> "555555", "count"=>2, :type=>"search"},
{"@rid"=>"#-2:5", "employeeId"=> "898989", "count"=>2, :type=>"search"},
{"@rid"=>"#-2:1", "employeeId"=> "5453454", "count"=>1, :type=>"search"},
{"@rid"=>"#-2:4", "employeeId"=>"987654321", "count"=>1, :type=>"search"}]
merged_array_hash = combined.group_by { |h1| h1["employeeId"] }.map do |k,v|
{ "employeeId" => k, :types => v.map { |h2| h2[:type] }.join(", ") }
end
merged_array_hashはビーイングを終わる:
[{employeeId: "898989",types: "wiki, search"},
{employeeId: "2423213",types: "search"},
{employeeId: "555555",types: "search"},
{employeeId: "5453454",types:"search"},
{employeeId: "987654321",types: "search"}]
私が取得しているよ何を:
[{employeeId: "898989",type: "both", count: 2},
{employeeId: "2423213",type: "search", count: 7},
{employeeId: "555555",type: "search", count: 2},
{employeeId: "5453454",type:"search", count: 1},
{employeeId: "987654321",type: "search", count: 1}]
このコードは実行されません。変数 'wiki'と' search'が保持するはずのことを説明できますか? – Zack
例を挙げると、Rubyオブジェクトとして望ましい結果が表示されます。 ( "combined = wiki + search"はその要件を満たしていません)また、各入力オブジェクトに変数を割り当てると便利です(ここにはおそらく 'arr = [{" @arid "=> ... }、{...}] ')。そうすることで、読者は答えやコメントの中のそれらの変数を定義することなく参照することができ、誰もが同じ変数名を使用します。 –
私は編集を気にしないと信じています。私は読者が水平にスクロールする必要がないように再フォーマットし、配列の変数名を追加しました。 –