注意数组差异 - Ruby

Spy*_*ros 0 ruby activerecord ruby-on-rails

我有两个数组.一个是一组技能,另一个是用户可以做的一组技能.为了显示 :

['swimming', 'rowing', 'cycling'] is the set of all skills
Run Code Online (Sandbox Code Playgroud)

现在,用户可以拥有以下技能:

['rowing', 'cycling']
Run Code Online (Sandbox Code Playgroud)

我如何创建一个漂亮的哈希,它将显示用户是否具有当前技能?与此特定用户一样,它将是:

{'swimming' => no, 'rowing' => yes, 'cycling', => yes}
Run Code Online (Sandbox Code Playgroud)

PS我实际上想用rails中的活动记录对象来做这个,但我想这是同样的想法.

saw*_*awa 6

以下将给出truefalse不是yesno.

all_skills = %w[swimming rowing cycling]
user_skills = %w[rowing cycling]

Hash[all_skills.map{|k| [k, user_skills.include?(k)]}]
Run Code Online (Sandbox Code Playgroud)

或者,如果你不介意nil相反的no情况下,以下更快.

Hash[user_skills.map{|k| [k, true]}]}
Run Code Online (Sandbox Code Playgroud)