如何遍历一个二维数组中的每个元素?

3

所以,我知道你可以使用以下方式浏览2D数组:

arr1.each do |a1|
  a1.each do |a2|
    puts a2

然而,我尝试做的事情有点不同。我有两组存储在数组中的值,并且我想循环遍历它们并从信息中填充下拉菜单。

因此,我有如下数据:

names = ["bob", "frank", "tim"] 
id = [1, 2, 3]

这个数组是从这样的一个方法中返回的:

def method_name
  #stuff
  return names, id
end

我希望在视图中能够将相应的索引彼此配对。所以,对于上面的例子,bob-1 frank-2 tim-3,我似乎无法想出解决方法。我尝试了切片和嵌套循环,也尝试了返回哈希而不是数组。我迷失了方向。
如果有人知道如何以我正在尝试的方式提取信息,或者有其他更简单的方法,请提供帮助,谢谢。

你应该看一下Nathan的回答。它更像Ruby风格。 - seph
2个回答

2

names.zip(id).map { |e| e.join('-') }

zip 将两个数组组合成一个二维数组:

[['bob', 1], ['frank', 2], ['tim', 3]]

map 遍历每个二维数组的三个元素,使用 join 方法将每个内部数组的两个元素用破折号连接起来,并将其转换为字符串。

请参考zipmapjoin文档了解更多信息。

通常,在研究 Ruby 中的数组操作时,您需要查看 Array 和 Enumerable 的文档。


0

这是 Ruby 中一个罕见的情况,迭代索引是有帮助的:

(0...names.size).map do |idx|
  "#{names[idx]}-#{id[idx]}"
end

您是位英雄。在此之前,我甚至不知道有map方法存在。很高兴我问了这个问题,因为我的头痛已经减轻了哈哈。再次感谢@seph! - M Ortiz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接