配列の欠落したデータを補完したい


こんにちは。

Ruby のプログラムで、日付と数値が入った配列のうち欠落した要素に対して補完をしたいと思っております。  
開始・終了日が決まっていますので、その間のデータがなければ配列に値を挿入、その後ソートして出力しております。  
目的は下記のプログラムで実現できているのですが、 Ruby っぽさがないと思っております。 Ruby
っぽさを求めるならこうだ！というのがあればよろしくお願いします。

[code]

    require "date"
    
    arr = [
             ["2015-03-01", 200],
             ["2015-03-02", 200],
             ["2015-03-04", 200],
             ["2015-03-05", 200],
             ["2015-03-06", 200],
           ]
    
    begin_date = "2015-03-01"
    end_date = "2015-03-07"
    
    (Date.parse(begin_date)..Date.parse(end_date)).each do |date|
    
        unless arr.find{|a| a.first == date.to_s} then
            arr << [date.to_s, nil]
        end
    end
    
    puts arr.sort_by{|a| a.first}
    
[/code]




Rubyらしいかは分かりませんが、ちょっとだけ書き換えてみました。多分こっちの方が速いと思うのですが。

[code]

    require "date"
    
    arr = [
            ["2015-03-01", 200],
            ["2015-03-02", 200],
            ["2015-03-04", 200],
            ["2015-03-05", 200],
            ["2015-03-06", 200],
          ]
    
    begin_date = "2015-03-01"
    end_date = "2015-03-07"
    h = arr.to_h
    
    (Date.parse(begin_date)..Date.parse(end_date)).each do |date|
      h[date.to_s] = nil unless h[date.to_s]
    end
    
    puts h.sort
    
[/code]




Rubyらしいかは分かりませんが、ちょっとだけ書き換えてみました。多分こっちの方が速いと思うのですが。

[code]

    require "date"
    
    arr = [
            ["2015-03-01", 200],
            ["2015-03-02", 200],
            ["2015-03-04", 200],
            ["2015-03-05", 200],
            ["2015-03-06", 200],
          ]
    
    begin_date = "2015-03-01"
    end_date = "2015-03-07"
    h = arr.to_h
    
    (Date.parse(begin_date)..Date.parse(end_date)).each do |date|
      h[date.to_s] = nil unless h[date.to_s]
    end
    
    puts h.sort
    
[/code]

