我有一个房间数组: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 方式"是什么