2015-06-10 79 views
-1

我怎麼能做到這一點的紅寶石嵌套循環在Ruby中,哈希和數組

var pCodePrice = { 
 
    'GR1': 3.11, 
 
    'SR1': 5, 
 
    'CF1': 11.23 
 
}; 
 
var basket = ['GR1', 'SR1', 'GR1', 'GR1', 'CF1']; 
 
var total = []; 
 

 

 
for (i = 0, x = basket.length; i < x; i++) { 
 
    for (var prop in pCodePrice) { 
 
    if (basket[i] == prop) { 
 
     total.push(pCodePrice[prop]) 
 
    } 
 

 
    } 
 

 
}

這遍歷數組,並檢查,如果該項目的哈希的關鍵比賽內部循環,如果是這樣,它會將值推入一個新的數組中。

我只是不能得到它在Ruby中,

感謝

+0

您的預期產量是多少? –

+0

你到目前爲止嘗試過什麼?如果您對for循環進行了一些小修改並刪除了'var'關鍵字,那麼該代碼幾乎可以在Ruby中正常工作。 (雖然當然也有更習慣性的做法。) – Ajedi32

+0

一個數組(總數),這只是購物籃中物品的價格 –

回答

4

它使用的地圖是在紅寶石非常簡單。

pCodePrice = { 'GR1' => 3.11, 'SR1' => 5, 'CF1' => 11.23 } 
=> {"GR1"=>3.11, "SR1"=>5, "CF1"=>11.23} 
basket = ['GR1','SR1','GR1','GR1','CF1'] 
=> ["GR1", "SR1", "GR1", "GR1", "CF1"] 
total = basket.map { |code| pCodePrice[code] } 
=> [3.11, 5, 3.11, 3.11, 11.23] 
+0

謝謝,對不起甚至upvote你 –

+2

或甚至更簡潔'pCodePrice.values_at(* basket)#=> [ 3.11,5,3.11,3.11,11.23]' – engineersmnky

+0

engineermnky,謝謝!我並不熟悉values_at。多麼好的方法。 –