我有一个Hash表,它将键和值保存为数组。我需要将它拆分为具有有效值的不同数组。
hash = {:fruits => [:apple, :banana, :mango] , :veggies => [:capsicum, :onion]}
我想创建一个这样的数组:
array = [
{:fruits => :apple, :veggies => :capsicum},
{:fruits => :apple, :veggies => :onion}
# ...
]
应包含所有有效条件。
答案 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}
# ]