每个3个值的数据集的Ruby解决方案
所以我没有太多的
Ruby知识,但需要处理一个简单的脚本.我会试着详细解释我的困境,但如果你还需要澄清,请告诉我.
我的脚本涉及每组3个数字.比方说,我们为每个人提供这三条信息:年龄,大小和分数.所以,我需要有一种方法来评估一个人是否存在某个年龄和大小.如果是这样,那么我想输出那个人的分数. 我知道跟踪这些信息的唯一方法是创建3个独立的数组,每个数组包含一条信息.我可以检查年龄是否包含在一个数组中,如果是,我可以找到它的索引(每个类别中的每个值都是唯一的 – 所以不会重复“年龄”,“大小”或“分数”).然后,我可以检查size数组中相同索引处的值是否与指定的大小匹配.如果是这样,我可以输出在同一索引的第三个数组中找到的分数.我不希望这样做,而是将每个人的年龄,体型和分数保持在一起. 所以,我在数组中尝试了这样的数组: testarray = [ [27,8,92],[52,12,84] ] 但问题是,我不确定如何访问这些子数组中的值.所以我知道我可以使用像testarray.include一样的东西(27)来检查主阵列中是否存在27,但我如何检查27和8是否是testarray子阵列中的前两个值,然后输出子阵列的第三个值,92. 然后我尝试了一系列哈希,如下所示: testarrayb = [ { :age => 27,:size => 8,:score => 92 },{ :age => 52,:size => 12,:score => 84 } ] 我知道我可以使用testarrayb [0] [:score]来获得92但是我怎样才能首先检查数组是否包含具有指定年龄和大小的散列,则输出该散列的分数?类似于testarrayb [:age] .include?(value)的东西,其中检查每个哈希的年龄,然后检查相同哈希的大小.如果两者都匹配指定的值,则输出该散列的分数. 如果有人能指出我正确的方向,我将非常感激.如果您推荐这种技术,请随意展示更高效和完全不同的技术.谢谢你的时间! 解决方法
为什么不创建一个简单的类来表示您的数据,例如使用Struct.然后提供一些类方法来处理过滤.
Entry = Struct.new(:age,:size,:score) do # Holds the data (example) def self.entries; @entries ||= [] end # Example filtering method def self.score_by_age_and_size(age,size) entry = entries.find { |e| e.age == age && e.size == size } entry.score if entry end end # Add some entries Entry.entries << Entry.new(27,92) Entry.entries << Entry.new(52,13,90) # Get score Entry.score_by_age_and_size(27,8) # => 92 Entry.score_by_age_and_size(27,34) # => nil (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |