哈希数组中的百分比?

Mic*_*oli -1 ruby arrays percentage ruby-hash

我有hash一个哈希数组array

hash = {"BEGIN"=>5, "END"=>10}


array = [
    {:name=>"aaa", :phase=>"END", :quantity=>6},
    {:name=>"bbb", :phase=>"END", :quantity=>4},
    {:name=>"ccc", :phase=>"BEGIN", :quantity=>5}
  ]
Run Code Online (Sandbox Code Playgroud)

如何计算从哈希中获取值的哈希数组的百分比并获得此结果?

[
  {:name=>"aaa", :phase=>"END", :quantity=>60%},
  {:name=>"bbb", :phase=>"END", :quantity=>40%},
  {:name=>"ccc", :phase=>"BEGIN", :quantity=>100%}
]
Run Code Online (Sandbox Code Playgroud)

先感谢您!

mec*_*cov 5

获取整数百分比

hash = { "BEGIN" => 5, "END" => 10 }

array = [
  { name: "aaa", phase: "END", quantity: 6 },
  { name: "bbb", phase: "END", quantity: 4 },
  { name: "ccc", phase: "BEGIN", quantity: 5 }
]

array.map! { |el| el.merge(quantity: el[:quantity] * 100 / hash[el[:phase]]) }

p array
# will print
# [{:name=>"aaa", :phase=>"END", :quantity=>60}, {:name=>"bbb", :phase=>"END", :quantity=>40}, {:name=>"ccc", :phase=>"BEGIN", :quantity=>100}]
Run Code Online (Sandbox Code Playgroud)

或者你使用每个

array.each { |el| el[:quantity] = el[:quantity] * 100 / hash[el[:phase]] }
Run Code Online (Sandbox Code Playgroud)