2016-03-03 128 views
0

我還沒有找到解決我的問題的方法。ruby​​更改數組的值

我有數組這樣

[Thu, 01 Oct 2015 12:35:17 UTC +00:00, "10 minutes", "Successful"] 
[Mon, 06 Nov 2015 12:35:17 UTC +00:00, "8 minutes", "Successful"] 
[Thu, 01 Dec 2015 12:35:17 UTC +00:00, "6 minutes", "Failed"] 

我要替換「成功」與「綠色」和「失敗」與「紅」。

我該如何做到這一點?

+0

你的符號是很難理解的。請使用標準檢查格式。 – sawa

回答

1
array.each do 
    |a| 
    a[2] = 
    case a[2] 
    when "Successful" then "green" 
    when "Failed" then "red" 
    end 
end 
+2

你是否真的這樣格式化你的代碼(在一個新行上阻塞參數,RHS在新行上的縮進)? –

0

這裏是另一個解決方案,如果有兩個以上的不同的置換,它們應該是得心應手:

a =[ ["Thu, 01 Oct 2015 12:35:17 UTC +00:00", "10 minutes", "Successful"], 
    ["Mon, 06 Nov 2015 12:35:17 UTC +00:00", "8 minutes", "Successful"], 
    ["Thu, 01 Dec 2015 12:35:17 UTC +00:00", "6 minutes", "Failed"] ] 

lut = {"Successful" => "green", 
     "Failed"  => "red" } 

a.each do |record| 
    lut.each{|k,v| record[2][k] &&= v} 
end 

p a 

# [["Thu, 01 Oct 2015 12:35:17 UTC +00:00", "10 minutes", "green"], ["Mon, 06 Nov 2015 12:35:17 UTC +00:00", "8 minutes", "green"], ["Thu, 01 Dec 2015 12:35:17 UTC +00:00", "6 minutes", "red"]]