2017-06-15 113 views
0

我有一個房間數組: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 
+0

'{offer1}'不是有效的Ruby對象。 –

回答

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

+0

是否有可能首先檢查兩個id,然後插入。可以說,兩者都有一個用於此目的的ID。 – Ravi

+0

是的 - 在這個循環中,您可以檢查房間和平均物體,並對它們做任何事情。拉鍊意味着它們將始終處於一步,所以你只能通過avg [5]看到房間[5] ......你不能直接訪問avg [x + 1]或avg [x-1](你不知道x是什麼!)這有道理嗎? – Fiid

+0

是的。我使用了一個select語句來檢查該項目。 – Ravi