根据键的值将哈希数组拆分为两个

Jum*_*ton 2 ruby arrays

如何根据ate键的值将这个哈希数组拆分为两个?

array = [
  { name: "Gad", ate: true },
  { name: "Lad", ate: false },
  { name: "Bad", ate: true },
  { name: "Sad", ate: false }
]
Run Code Online (Sandbox Code Playgroud)

示例输出

array_1 = [
  { name: "Gad", ate: true },
  { name: "Bad", ate: true }
]
array_2 = [
  { name: "Lad", ate: false },
  { name: "Sad", ate: false }
]
Run Code Online (Sandbox Code Playgroud)

tor*_*o2k 14

使用Enumerable#partition方法:

array.partition { |x| x[:ate] }
# => [[{:name=>"Gad", :ate=>true}, {:name=>"Bad", :ate=>true}], 
#     [{:name=>"Lad", :ate=>false}, {:name=>"Sad", :ate=>false}]]
Run Code Online (Sandbox Code Playgroud)

要么:

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}]
Run Code Online (Sandbox Code Playgroud)