2015-07-20 63 views
0

我将使用一个具体示例来表达我想要做的事情,因为我发现这是使我的观点清晰的最简单的方法。如何使用.find更改嵌套数组中的值

我想知道如何使用.find方法查找名为“Frank”的学生,并将他的成绩转换为“F”。

这里是嵌套的数组是什么样子例:

School data{ 
    :name => "School Name", 
    :location => "NYC", 
    :students => [ 
    {:name => "Steven", :grade => "B"}, 
    {:name=>"Bob", :grade => "F"}, 
    {:name => "Frank", :grade => "A"}, 
    {:name => "Silvia", :grade => "C"} 
    ] 
} 

非常感谢你。

+0

哦,我差点为此而堕落。我无法良心地帮助你改变你在学校的成绩。 ;-) Bueller? Bueller? Bueller? – Beartech

回答

1

试试这个:

frank = data[:students].find { |s| s[:name] == 'Frank' } 
frank[:grade] = 'F' 

考虑使用类代替嵌套Hash ES和Array秒。