3

将以下两个数组合并为多维数组的最佳方法是什么?

x = ['A', 'B', 'C']
y = ['D', 'E', 'F']

期望的结果:

z = [['A', 'D'], ['A', 'E'], ['A', 'F'], ['B', 'D'], ['B', 'E'], ['B', 'F'], ['C', 'D'], ['C', 'E'], ['C', 'F']]
4

3 回答 3

6

您可以使用Array#product

x = ['A', 'B', 'C']
y = ['D', 'E', 'F']

result = x.product(y)

puts result.inspect
于 2013-02-22T18:31:55.913 回答
2

这是一种方法,尽管不一定是最简单的方法:

x = ['A', 'B', 'C']
y = ['D', 'E', 'F']

result = []

x.each do |x|
  y.each do |y|
    result << [x, y]
  end
end

puts result.inspect

更新:这是一种更简洁的方式:

x = ['A', 'B', 'C']
y = ['D', 'E', 'F']

puts x.map { |x|
  y.map { |y| [x, y] }
}.inspect
于 2013-02-22T18:23:44.613 回答
0

另一种方法是这样的:

x = ['A', 'B', 'C']
y = ['D', 'E', 'F']

print x.concat(y).each_slice(2).to_a    # => [["A", "B"], ["C", "D"], ["E", "F"]]
于 2013-02-22T18:35:43.663 回答