我有两个数组:['x','y','z']
和[1,2]
。我如何在第三个数组中创建值对(作为字符串)?
所以我最终会这样:
['x:1', 'x:2', 'y:1', 'y:2', 'z:1', 'z:2']
感谢您的帮助!
答案 0 :(得分:11)
答案 1 :(得分: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
现在请注意,我相信有更好的方法可以做到这一点。但考虑到,我相当肯定这应该有效。
答案 2 :(得分:2)
这是一种简短有效的方法,并且读得很好。
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 }
。我将flat_map
替换为map
,将e.to_s+?:+f.to_s
替换为"#{e}:#{f}"
,分别由@PhilRoss和@Stefan建议。谢谢你们两个。