将Array对象合并为具有数组的哈希

时间:2017-06-15 19:26:56

标签: ruby-on-rails arrays ruby hash

我有一系列房间:rooms_array = [room1...roomn],每个房间都是一个哈希,各自有详细信息。每个房间哈希都有一个优惠哈希。 room1 = {...., offers=> {...},...} 现在我有另一组优惠哈希。 avg_array = [[{offer1},{offer2}],[{offer4},{offer3}],....] 两个散列的长度相同,因此第一个avg_array数组用于room1,第二个用于room2,依此类推...... 我的问题是如何将每个avg_array数组添加到rooms_array的相应商品哈希中。

我的尝试:

_rooms.values.map do |room|
  if room[:offers].count > 1
    i=0
    room[:offers] = rooms_hash[i]
    i = i + 1
  end
end

1 个答案:

答案 0 :(得分:3)

看起来您可以使用Array.zip

执行某些操作
rooms.zip(avg_array).map do |room,avg|
  room[:offers] = avg
  room
end

如果要附加到现有数组:

rooms.zip(avg_array).map do |room,avg|
  room[:offers] ||= []
  room[:offers].concat avg
  room
end

请参阅: What's the 'Ruby way' to iterate over two arrays at once