加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

每个3个值的数据集的Ruby解决方案

发布时间:2020-12-17 03:31:07 所属栏目:百科 来源:网络整理
导读:所以我没有太多的 Ruby知识,但需要处理一个简单的脚本.我会试着详细解释我的困境,但如果你还需要澄清,请告诉我. 我的脚本涉及每组3个数字.比方说,我们为每个人提供这三条信息:年龄,大小和分数.所以,我需要有一种方法来评估一个人是否存在某个年龄和大小.如
所以我没有太多的 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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读