Ruby:将两个数组的单个值配对到第三个数组中
我有两个数组:Ruby:将两个数组的单个值配对到第三个数组中,ruby,arrays,Ruby,Arrays,我有两个数组:['x','y','z']和[1,2]。如何在第三个数组中创建成对的值(作为字符串) 因此,我最终会得出以下结论: ['x:1', 'x:2', 'y:1', 'y:2', 'z:1', 'z:2'] 谢谢你的帮助 您可以使用该方法创建对,然后执行以下操作: 我的建议是把这个问题分成两个独立的问题。在这种情况下,应满足以下条件: 一次遍历两个数组上的每个元素。在我们前进的过程中推动价值观 将字符串放入新数组的分支中 虽然很混乱,但我可能会沿着这条路做一些事情: def foo
['x','y','z']
和[1,2]
。如何在第三个数组中创建成对的值(作为字符串)
因此,我最终会得出以下结论:
['x:1', 'x:2', 'y:1', 'y:2', 'z:1', 'z:2']
谢谢你的帮助 您可以使用该方法创建对,然后执行以下操作:
我的建议是把这个问题分成两个独立的问题。在这种情况下,应满足以下条件:
def foo
#declare our known values as arrays, and initialize the container of the final result.
combined_array = []
array_letters = ['x', 'y', 'z']
array_numbers = ['1', '2']
array_letters.each do |letter|
array_numbers.each do |number|
combined_array << "#{letter}:#{number}"
end
end
#return our new array
combined_array
end
def foo
#将已知值声明为数组,并初始化最终结果的容器。
组合_数组=[]
数组_字母=['x','y','z']
数组_数=['1','2']
数组|个字母。每个do |个字母|
数组|编号。每个do |编号|
组合_数组这里有一种方法既短又有效,而且可读性好
a1 = ['x','y','z']
a2 = [1,2]
a1.flat_map { |e| a2.map { |f| "#{e}:#{f}" } }
#=> ['x:1', 'x:2', 'y:1', 'y:2', 'z:1', 'z:2']
我最初有a2.map{f | e.to_s+?:+f.to_s}
。我用map
替换了flat\u map
,e.to\u s+?:+f.to\u s
替换了“{e}:{f}”
,分别由@PhilRoss和@Stefan建议。谢谢你们两位。这是可行的,但不是Ruby方式。这是老派的做法。我不会投反对票,但我也不会投反对票。我从来没有说过这是真的,因此我在最后说肯定有更好的方法来做到这一点。事实就是这样,正如菲尔所展示的。我在看到菲尔给出的答案之前就发布了,在我发布的时候,菲尔也发布了。因此,我的页面更新了我的答案和菲尔的答案。a2.flat\u map
可以替换为a2.map
(结果已经是平面的)。我会使用字符串插值“#{e}:#{f}”
a1 = ['x','y','z']
a2 = [1,2]
a1.flat_map { |e| a2.map { |f| "#{e}:#{f}" } }
#=> ['x:1', 'x:2', 'y:1', 'y:2', 'z:1', 'z:2']