从多个数组项返回字符串

Pet*_*ter 2 ruby ruby-on-rails

我有多个数组,其中包含代码字符串项.我需要匹配给定字符串中的代码,然后从匹配的数组中返回一个类名.

如果我告诉你我有什么,可能会更好.下面是数组,下面是我需要返回的字符串,如果给定的字符串匹配数组中的项目.所以假设我发送一个'329'字符串,这应该返回'ss4'作为字符串:

['392', '227', '179', '176']
= 'ss1'

['389', '386']
= 'ss2'

['371', '338', '335']
= 'ss3'

['368', '350', '332', '329', '323', '185', '182']
= 'ss4'
Run Code Online (Sandbox Code Playgroud)

我需要知道什么是最好的方法.我可以创建一个辅助方法并为每个代码块创建一个数组,然后检查每个数组以查看是否包含给定的字符串代码,然后返回字符串,可以是ss1或ss4.这是一个好主意吗?

Pin*_*nyM 5

最有效的方法是生成一个可以超快速执行查找的转换器哈希:

CODES = {
  ss1: ['392', '227', '179', '176'],
  ss2: ['389', '386'],
  ss3: ['371', '338', '335'],
  ss4: ['368', '350', '332', '329', '323', '185', '182']
}

translator = CODES.each_with_object({}){|(s, a), m| a.each{|n| m[n] = s.to_s}}
Run Code Online (Sandbox Code Playgroud)

现在你可以简单地做:

translator['329']
=> "ss4"
translator['389']
=> "ss2"
Run Code Online (Sandbox Code Playgroud)