将哈希分割成红宝石中的数组

时间:2016-02-23 11:43:14

标签: arrays ruby hash

我有一个Hash表,它将键和值保存为数组。我需要将它拆分为具有有效值的不同数组。

hash = {:fruits => [:apple, :banana, :mango] , :veggies => [:capsicum, :onion]}

我想创建一个这样的数组:

array = [
  {:fruits => :apple, :veggies => :capsicum},
  {:fruits => :apple, :veggies => :onion}
  # ...
]

应包含所有有效条件。

1 个答案:

答案 0 :(得分:3)

keys = hash.keys
first, *rest = hash.values
first.product(*rest).map{|values| keys.zip(values).to_h} # =>
# [
#   {:fruits=>:apple, :veggies=>:capsicum},
#   {:fruits=>:apple, :veggies=>:onion},
#   {:fruits=>:banana, :veggies=>:capsicum},
#   {:fruits=>:banana, :veggies=>:onion},
#   {:fruits=>:mango, :veggies=>:capsicum},
#   {:fruits=>:mango, :veggies=>:onion}
# ]