 <p>Riffing off Qerub's answer - if the arrays are sorted as in the example zip can be a great tool for this:</p> <pre><code>arr1 = [{:day =&gt; 12, :sum_src =&gt; 1234}, {:day =&gt; 14, :sum_src =&gt; 24543}] arr2 = [{:day =&gt; 12, :sum_dst =&gt; 4234}, {:day =&gt; 14, :sum_dst =&gt; 342334}] arr1.zip(arr2).map {|a,b| a.merge!(b)} </code></pre> <p>Result</p> <pre><code>[{:day=&gt;12, :sum_dst=&gt;4234, :sum_src=&gt;1234}, {:day=&gt;14, :sum_dst=&gt;342334, :sum_src=&gt;24543}] </code></pre>