我正在尝试学习Ruby,而数组给我带来了一些麻烦。
我输入的内容是"name, number, name, number"
模式。然后我想创建一个2元素数组的数组,每个数组包含一个名称和下一个数字。
当我将这些2元素数组推入另一个数组时,似乎会自动展平为0维数组。我想要的是最终数组的大小为[N/2][2]
,N
是名称的数量或输入中的数字。
带有注释的puts
只有在对数组中的所有元素都被打印后才会发生,所以它看起来像这样:
Name
1
Name
2
Name
3
当我预料到这一点时:
Name
1
Name
2
Name
3
我想我的问题是:
答案 0 :(得分:4)
some_array = [[["Name 1", "value 1"], ["Name 2", "value 2"]], [["Name 3", "value 3"], ["Name 4", "value 4"]]]
array = some_array.flatten
new_array = array.each_slice(2).map do |a, b|
[a,b]
end
#=> [["Name 1", "value 1"],
#=> ["Name 2", "value 2"],
#=> ["Name 3", "value 3"],
#=> ["Name 4", "value 4"]]
类似于some_array.flatten(1)