如何在Ruby中更改多维数组的输出顺序?

时间:2019-07-07 19:33:43

标签: ruby

我有以下两个数组:

m1 = ["a", "b", "c"]
m2 = ["yes", "no"]

我希望得到以下结果:

expected-output = [["a", "yes"], ["a", "no"],
                   ["b", "yes"], ["b", "no"],
                   ["c", "yes"], ["c", "no"]]

这是我尝试的代码:

array1 = []
array2 = []
m2.map { |e| m1.map {|i| array1 << i and array2 << e }}
newArray = array1.zip(array2)
print newArray

但是我的结果顺序不正确:

[["a", "yes"], ["b", "yes"], 
 ["c", "yes"], ["a", "no"], 
 ["b", "no"], ["c", "no"]]

PS:我已经使用了排序方法,但没有用。

1 个答案:

答案 0 :(得分:2)

为此,您必须使用Ruby上可用的Product函数。

https://apidock.com/ruby/Array/product

> m1 = ["a", "b", "c"]
=> ["a", "b", "c"]
> m2 = ["yes", "no"]
=> ["yes", "no"]
> m1.product(m2)
=> [["a", "yes"], ["a", "no"], ["b", "yes"], ["b", "no"], ["c", "yes"], ["c", "no"]]