Ruby 组合来自两个独立数组的字符串元素

Ruby 组合来自两个独立数组的字符串元素,ruby,arrays,Ruby,Arrays,我有两个数组 names = ["name1", "name2"] tracks = ["track1", "track2"] 我正在尝试将这两个数组合并成一个新数组 data => ["name1 track1", "name2 track2"] 我尝试了以下方法 1) @data = @name.zip(@tracks)flatten produces ["name1", "track1", "name2", "track2"] 2) @data = @nam

我有两个数组

names = ["name1", "name2"]
tracks = ["track1", "track2"]
我正在尝试将这两个数组合并成一个新数组

data => ["name1 track1", "name2 track2"]
我尝试了以下方法

1)   @data = @name.zip(@tracks)flatten 
     produces ["name1", "track1", "name2", "track2"]

2)   @data = @name.at(0).concat(@tracks.at(0)) + @name.at(1).concat(@tracks.at(1))
     produces ["name1track1name2track2"]

3)   @name.each do |n|
      @tracks.each do |t|
       @data.push n + " " + t
       end
     end
     produces ["name1 track1", "name1 track2", "name2 track1", "name2 track2"]

我似乎无法解决这个问题。我非常感谢您的帮助。

您可以这样做:

data = []
names.each_with_index {|x,y| data << "#{x} #{tracks[y]}" }
data # => ["name1 track1", "name2 track2"]
data=[]
names.each_与_索引{| x,y |数据[“name1 track1”,“name2track2”]

您可以这样做:

data = []
names.each_with_index {|x,y| data << "#{x} #{tracks[y]}" }
data # => ["name1 track1", "name2 track2"]
data=[]
names.each_与_索引{| x,y |数据[“name1 track1”,“name2track2”]

这里有一个简单的方法:

names = ["name1", "name2"]
tracks = ["track1", "track2"]

names.zip(tracks).map { |a| a.join(" ") }
# => ["name1 track1", "name2 track2"]
首先,

names.zip(tracks)
给我们

[["name1", "track1"], ["name2", "track2"]]

然后我们使用
map

将内部数组与一个空格连接起来,这里有一个简单的方法:

names = ["name1", "name2"]
tracks = ["track1", "track2"]

names.zip(tracks).map { |a| a.join(" ") }
# => ["name1 track1", "name2 track2"]
首先,

names.zip(tracks)
给我们

[["name1", "track1"], ["name2", "track2"]]
然后我们使用
map

将内部数组与一个空格连接起来,我喜欢这种方法

我喜欢这个方法

另一个:

names.map { |s| s << ' ' << tracks.shift }
  #=> ["name1 track1", "name2 track2"]
另一个:

names.map { |s| s << ' ' << tracks.shift }
  #=> ["name1 track1", "name2 track2"]
有点不同的方式:

names  = ["name1", "name2"] 
tracks = ["track1", "track2"]

names.each_index.map { |i| "#{names[i]} #{tracks[i]}" }
# => ["name1 track1", "name2 track2"]
有点不同的方式:

names  = ["name1", "name2"] 
tracks = ["track1", "track2"]

names.each_index.map { |i| "#{names[i]} #{tracks[i]}" }
# => ["name1 track1", "name2 track2"]

另一种方式,非常类似于@steenslag(我有时讨厌打开块:-))


另一种方式,非常类似于@steenslag(我有时讨厌打开块:-))


我同意了这个答案,它非常有效。非常感谢!我同意了这个答案,它非常有效。非常感谢!如果
names=>['cat','cat']
有问题。如果
names=>['cat','cat']
有一个问题。如果
array.size=>1000
,你会创建一个包含一百万个元素的数组,然后扔掉其中的99.9万个!是的,没有说是快还是便宜。:-)如果
array.size=>1000
,你会创建一个包含一百万个元素的数组,然后扔掉其中的99.9万个!是的,没有说是快还是便宜。:-如果至少有一个答案符合你的需要——就像这里(考虑到你对@steenslag答案的评论),那么你通常会过早地选择答案(从而阻止其他答案)或从不选择答案--你应该选择一个你最喜欢的答案。不要着急,只是别忘了去做。看看这个。那些新来的人通常会过早地选择答案(因此不鼓励其他答案)或者从不选择答案。如果至少有一个答案符合你的需要——就像这里(考虑你对@steenslag的答案的评论)--你应该选一个你最喜欢的。不用着急,只是别忘了做。看看这个。