我有一个像这样的数组:
[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
但那显然会将每个值分配给一个'time'键。
您可以尝试使用each_slice(2),它将按2
批处理返回的结果 my_array.each_slice(2) do |value|
array << {:time => value[0], :elevation => value[1]}
end
希望能有所帮助
你可以做
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}]