使用each_with_index创建2 d数组

时间:2015-10-09 18:49:49

标签: arrays ruby

我是Ruby的新手。我正在尝试使用2d array在其他数组上创建each_with_index。例如:

arr = ["a","b","c"]
puts arr.each_with_index{|v,i| [v, i+1]}

但由于某种原因,我只看到1d阵列。

a
b
c

而不是

a
1
b
2
c
3

我做错了吗?

2 个答案:

答案 0 :(得分:2)

可能不是最好的方法,但现在这是一个解决方案:

arr = ["a", "b", "c"]
new_arr = []

arr.each_with_index { |letter, idx| new_arr.push([letter, idx + 1])}

这是另一种方式:

arr = ["a", "b", "c"]
arr = arr.map.with_index { |el, idx| [el, idx + 1] }

另请注意,使用puts将使用新行打印您的对帐单。使用p实际上会打印出对象

编辑:而且,我认为我最初误解了你的问题。幸运的是,map.with_index的第二种方法应该是您正在寻找的方法。如果您不想保存更改,请不要使用arr =

进行设置

答案 1 :(得分:1)

我建议:

arr.each.with_index(1).to_a
  #=> [["a", 1], ["b", 2], ["c", 3]]