将数组对象合并到具有数组的哈希中



我有一个房间数组:rooms_array = [room1...roomn],每个房间都是一个哈希值,具有各自的详细信息。每个房间哈希都有一个优惠哈希。 room1 = {...., offers=> {...},...}现在我有另一个报价哈希数组。 avg_array = [[{offer1},{offer2}],[{offer4},{offer3}],....]两个哈希的长度相同,所以第一个avg_array数组用于房间 1,第二个数组用于房间 2,依此类推......我的问题是如何将每个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

看起来您可以使用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

看:一次迭代两个数组的"Ruby 方式"是什么

最新更新