使用Rails数组中的两个键/值对构建哈希数组

时间:2013-01-21 01:49:35

标签: ruby-on-rails ruby arrays hash

我有一个如下所示的数组:

[172336, 60, 172339, 64, 172342, 62, 172345, 61, 172348, 62, .....]

我正在尝试将其转换为哈希数组,其中每个哈希都有两个键/值对,键是“时间”或“提升”,“时间”哈希的值在[ 0],[2],[4]等,而'海拔'是[1],[3]等等。所以,它看起来像:

[{time => 172336, elevation => 60}, {time => 172339, elevation => 64}, {time => 172342, elevation => 62},.....]

使用以下内容获取每个项目非常简单:

my_array.each do |x|
 new_array << {:time => x}
end

但显然会将每个值分配给“时间”键。我无法弄明白如何获得每一件物品。

2 个答案:

答案 0 :(得分:6)

您可以尝试使用each_slice(2),它将按2

批量返回结果
 my_array.each_slice(2) do |value| 
  array << {:time => value[0], :elevation => value[1]}
end

希望这有帮助

答案 1 :(得分:1)

你可以做到

keys = [:time, :elevation]
values = [172336, 60, 172339, 64, 172342, 62, 172345, 61, 172348, 62]

array = values.each_slice(2).map { |value| Hash[keys.zip(value)] }
# [{:time=>172336, :elevation=>60},
#  {:time=>172339, :elevation=>64},
#  {:time=>172342, :elevation=>62},
#  {:time=>172345, :elevation=>61},
#  {:time=>172348, :elevation=>62}]