2016-12-07 3 views
0

上のルビーを使用して、同じIDを持っている場合は、重複を削除します。私はこのような配列の配列持つ単一のものにサブアレイをマージして、彼らはレール

array = [[1, 'Something', '123456321'], [2, 'Something', '123456321'], [2, 'Something', '1234563212']] 

をそして私は同じIDを持っているサブアレイをマージし、これを取得したいです結果:

array = [[1, 'Something', '123456321'], [2, 'Something, Something', '123456321, 1234563212']] 

誰でも手伝ってもらえますか?ありがとう!あなたが最近逆の質問をしたよう

答えて

1
array.group_by(&:first).map do |id, records| 
    names = records.map(&:second).join(', ') 
    values = records.map(&:last).join(', ') 

    [id, names, values] 
end 

は、私はあなたがEnumerableArrayHashString資料を読むのをお勧めします。表現力とRubyの一般的な作業方法の理解を即座に高めることができます。

+0

それは動作します。提案とその答えをありがとう! – Lucasio

0

楽しみのためだけに、ここでワンライナーです:

array.group_by(&:first).map{|i, arrays| [i] + arrays.transpose.drop(1).map{|v| v.join(', ') } } 
関連する問題