Ruby阵列麻烦

时间:2012-03-07 16:46:36

标签: ruby arrays

我正在尝试学习Ruby,而数组给我带来了一些麻烦。 我输入的内容是"name, number, name, number"模式。然后我想创建一个2元素数组的数组,每个数组包含一个名称和下一个数字。

当我将这些2元素数组推入另一个数组时,似乎会自动展平为0维数组。我想要的是最终数组的大小为[N/2][2]N是名称的数量或输入中的数字。

http://pastie.org/3542269

带有注释的puts只有在对数组中的所有元素都被打印后才会发生,所以它看起来像这样:

Name
1
Name
2
Name
3

当我预料到这一点时:

Name
1

Name
2

Name
3

我想我的问题是:

  • 如何将数组放入数组中,以形成锯齿状数?
  • 如何跟踪我的数组在Ruby中的维数?当你必须宣布一个尺寸时,这会容易得多。

1 个答案:

答案 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)