按日期优化哈希分组数组

0 ruby arrays sorting algorithm hash

给定数组

[
  {date: '2014-01-01', a: 5, b:1},
  {date: '2014-01-01', xyz: 11},
  {date: '2014-10-10', qbz: 5},
  {date: '2014-10-10', v: 4, q: 1, strpm: -99}
]
Run Code Online (Sandbox Code Playgroud)

我想按日期分组并输出一个哈希数组

ouput = [
 {date: 2014-01-01, a: 5, b:1, xyz: 11 },
 {date: 2014-10-10, qbz: 5, v: 4, q: 1, strpm: -99},
]
Run Code Online (Sandbox Code Playgroud)

我在Ruby中解决它并有一个解决方案,但它似乎效率低下.

def arrayt(inputarray)
    outputarray=[];
    inputarray.each do |x|
        tindex = includes(outputarray,x[:date])
        if tindex == -1
            outputarray.push(x)
        else
            outputarray[tindex].merge!(x)
        end
    end
    return outputarray
end

def includes(array,date)
    array.each_with_index do |temp,index|
        if date==temp[:date]
            return index
        end
    end
    return -1
end
Run Code Online (Sandbox Code Playgroud)

任何有关更优雅的解决方案的帮助将不胜感激

saw*_*awa 6

[
  {date: '2014-01-01', a: 5, b:1},
  {date: '2014-01-01', xyz: 11},
  {date: '2014-10-10', qbz: 5},
  {date: '2014-10-10', v: 4, q: 1, strpm: -99}
]
.group_by(&:first).map{|_, v| v.inject(:merge)}
Run Code Online (Sandbox Code Playgroud)