2016-03-03 127 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"]]