我有四个等长的数组:
a = [1, 2, 3, 4, 5]
b = ['A', 'B', 'C', 'D', 'E']
c = ['J', 'K', 'L', 'M', 'N']
d = ['v', 'w', 'x', 'y', 'z']
我想从每个数组中取一个元素,得到一个包含所有可能组合的数组:
[
[1, 'A', 'J', 'v'],
[2, 'A', 'J', 'v'],
[3, 'A', 'J', 'v'],
...
]
我在做这个:
master_array = []
for i in first_names do
sub_array = []
for j in last_names do
for k in city do
for l in state do
sub_array.push(i, j, k, l)
end
end
end
master_array.push(sub_array)
end
master_array
理想情况下,我希望返回一个哈希数组,其键是数组的名称,如下所示:
[
{a: 1, b: 'A', c: 'J', d: 'v'},
{a: 2, b: 'A', c: 'J', d: 'v'},
{a: 3, b: 'A', c: 'J', d: 'v'},
...
]
2条答案
按热度按时间ufj5ltwl1#
使用Array#product,就像@sagarpandya建议的那样。
请注意,如果
get_em_all
的参数被更改为其他东西--8个3元素数组,例如-----则不需要更改方法。对象(如数组)不知道保存它们的变量。例如,考虑一下
变量
a
和变量b
都是同一个对象,数组[1,2,3]
。因此,要获得你想要的哈希数组,你必须在编译时使用文字键来构造它,并硬连接到四个数组
a
、b
、c
和k
。此外,没有理由使用变量名作为哈希的键。这在几个层面上都是糟糕的编程实践。7vux5j2d2#
如果你想要所有可能的组合,除了遍历所有数组的每个元素之外别无选择。
创建哈希也不难。
试试这个
我相信这就是你要找的。