2016-04-24 11 views
0

私は大部分同じ値を含むハッシュの配列を持っています。ただし、ハッシュの一部には、他のキー値のペアとは別のキー値のペアがあります。たとえば、配列は次のようになります異なるキーでハッシュの配列のCSVを作成

example_array = [{"make" => "nissan", "model" => "altima"}, {"make" => "nissan", "model" => "maxima", "price" => "20,000"}] 

私の問題は、このハッシュの配列をCSV形式にエクスポートしようとしていることです。私は

  1. ファイルのヘッダが配列に存在するすべての可能なキーの列/キー

  2. 値がで終わることを確認してくださいを持っていることを確認する方法を見つけ出すことはできません正しい列

は、すべてのヘルプは大幅にあなたが好きなことを書くことができます

+0

属性がない場合のデフォルト値はどうですか? – Ilya

+0

私はちょうどそれがその値/セルの場合は空であることを望むだろう – Splashlin

答えて

0

をいただければ幸いです。

require 'csv' 

headers = example_array.inject([]) {|res, h| h.keys | res} #all possible headers 
#=> ["make", "model", "price"] 
rows = example_array.map {|h| h.values_at(*headers)} 
#=> [["nissan", "altima", nil], ["nissan", "maxima", "20,000"]] 
CSV.generate do |csv| 
    csv << headers 
    rows.each do |row| 
    csv << row 
    end 
end 

ファイルにCSVを書きたい場合は、CSV.generateの代わりにCSV.open("myfile.csv", "w") と書いてください。

関連する問題