【发布时间】:2019-07-08 03:50:30
【问题描述】:
我有这两个数组:
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:我已经用过sort方法了,还是不行。
【问题讨论】:
-
只要
m1.product(m2)。 -
对于它的价值,你尝试的可以写成
m1.flat_map{ |letter| m2.map{ |bool| [letter, bool] } }或m1.map { |i| m2.map {|e| array1 << i; array2 << e }}。使用product确实是一个更好的解决方案,但现在您知道如何修复您的代码了。
标签: ruby