我有阵列像这样的哈希:如何从哈希的值的所有可能的组合
{a: [1, 2], b: [3, 4]}
我试图建立一个阵列,从不同的键值对值的所有可能的组合,每个,在下面的形式:
[{a: 1, b: 3}, {a: 1, b: 4}, {a: 2, b: 3}, {a: 2, b: 4}]
散列可以具有n
密钥并且每个可以具有m
值 - 我不能呈现任意数量。每个值(数组)可以有不同的大小。下面也是一个有效的输入:
{a: [1, 2, 3], b: [4, 5, 6, 7], c: [8, 9, 10, 11, 12]}
我与所有的价值排列,但没有按键阵列中的最佳:
a = {a:[1, 2, 3], b: [4, 5, 6], c: [7, 8, 9]}
a.reduce([]) { |acc, (k, v)| acc.empty? ? v : acc.product(v) }.map(&:flatten)
=> [[1, 4, 7], [1, 4, 8], [1, 4, 9], [1, 5, 7], [1, 5, 8], [1, 5, 9], [1, 6, 7], [1, 6, 8], [1, 6, 9], [2, 4, 7], [2, 4, 8], [2, 4, 9], [2, 5, 7], [2, 5, 8], [2, 5, 9], [2, 6, 7], [2, 6, 8], [2, 6, 9], [3, 4, 7], [3, 4, 8], [3, 4, 9], [3, 5, 7], [3, 5, 8], [3, 5, 9], [3, 6, 7], [3, 6, 8], [3, 6, 9]]
我应该怎么做这在Ruby中?
每个键的数组长度是否相同? –
@ Md.FhanhanMemon不,它可以变化。 – pmichna
如果'h'是你的散列,这个问题是关于数组'h.values'。也就是说,这个问题实际上是关于数组的,但是它们是获得的。 –