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.这是一个好主意吗?
最有效的方法是生成一个可以超快速执行查找的转换器哈希:
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)
| 归档时间: |
|
| 查看次数: |
162 次 |
| 最近记录: |