我是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
我做错了吗?
答案 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]]