迭代数组哈希以创建数组数组

  • 本文关键字:数组 创建 哈希 迭代 ruby
  • 更新时间 :
  • 英文 :


>假设我有一个哈希

@attribute_type = {
typeA: ['a', 'b', 'c'],
typeB: ['1', '2', '3'],
typeC: ['9', '8', '7']
}

我想遍历这些值,以便我可以创建一个具有三个数组的所有不同可能组合的数组,例如:

['a', '1', '9'], ['a', '1', '8'], ['a', '1', '7'], ['a', '2', '9'], ...

这可能吗?

h = { :typeA=>['a','b','c'], :typeB=>['1','2','3'], :typeC=>['9','8','7'] }
first, *rest = h.values
#=> [["a", "b", "c"], ["1", "2", "3"], ["9", "8", "7"]]
first.product(*rest)
#=> [["a", "1", "9"], ["a", "1", "8"], ["a", "1", "7"],
#    ["a", "2", "9"], ["a", "2", "8"], ["a", "2", "7"],
#    ["a", "3", "9"], ["a", "3", "8"], ["a", "3", "7"],
#    ["b", "1", "9"], ["b", "1", "8"], ["b", "1", "7"],
#    ["b", "2", "9"], ["b", "2", "8"], ["b", "2", "7"],
#    ["b", "3", "9"], ["b", "3", "8"], ["b", "3", "7"],
#    ["c", "1", "9"], ["c", "1", "8"], ["c", "1", "7"],
#    ["c", "2", "9"], ["c", "2", "8"], ["c", "2", "7"],
#    ["c", "3", "9"], ["c", "3", "8"], ["c", "3", "7"]]

请参见阵列#产品。

我的2美分。

与Cary Swoveland几乎相同,但只有一行:

h.values.first.product(*h.values.drop(1))

最新更新