我正在为一款电商应用程序尝试将一个选项哈希(每个选项都有一个选择数组)转换为表示这些选择组合的哈希数组。例如:
# Input:
{ :color => [ "blue", "grey" ],
:size => [ "s", "m", "l" ] }
# Output:
[ { :color => "blue", :size => "s" },
{ :color => "blue", :size => "m" },
{ :color => "blue", :size => "m" },
{ :color => "grey", :size => "s" },
{ :color => "grey", :size => "m" },
{ :color => "grey", :size => "m" } ]
输入框内可能包含一个未确定数量选项的附加选项,但它只会嵌套1级。任何
shift
而不是unshift
(如果没有给出参数,则不执行任何操作)。另外,值得一提的是,在 Ruby 2+ 中,您可以将最后一个map
替换为map(&:to_h)
,因此:ary.shift.product(*ary).map(&:to_h)
。 - Jordan Runningfirst, *rest = input.map {|k,v| [k].product v }; output = first.product(*rest).map(&:to_h)
。但这只是我的个人看法。;) - Jordan Running