Split an array of hashes in two based on the value of a key

arrays, ruby

Solution

Use the `Enumerable#partition` method:

array.partition { |x| x[:ate] }
# => [[{:name=>"Gad", :ate=>true}, {:name=>"Bad", :ate=>true}], 
#     [{:name=>"Lad", :ate=>false}, {:name=>"Sad", :ate=>false}]]

Or:

array_1, array_2 = array.partition { |x| x[:ate] }

array_1
# => [{:name=>"Gad", :ate=>true}, {:name=>"Bad", :ate=>true}]

array_2
# => [{:name=>"Lad", :ate=>false}, {:name=>"Sad", :ate=>false}]

Problem

How can split this array of hashes in two based on the value of the `ate` key? ``` array = [ { name: "Gad", ate: true }, { name: "Lad", ate: false }, { name: "Bad", ate: true }, { name: "Sad", ate: false } ] ``` Example output ``` array_1 = [ { name: "Gad", ate: true }, { name: "Bad", ate: true } ] array_2 = [ { name: "Lad", ate: false }, { name: "Sad", ate: false } ] ```

Original source