在rails中匹配数组项

时间:2011-07-27 12:54:52

标签: ruby arrays

我有两个数组,我希望看到匹配的总数,在数组之间的各个项目。

例如:

的数组

1 - 房子,狗,猫,汽车 2 - 猫,书,盒子,汽车

将返回2.

有什么想法吗?谢谢!

EDIT /

基本上我有两种形式(针对两种不同类型的用户),它们使用嵌套属性来存储他们拥有的技能数量。我可以通过

打印出技能
current_user.skills.each do |skill| skill.name

other_user.skills.each do |skill| skill.name

当我打印出阵列时,我得到:#<Skill:0x1037e4948>#<Skill:0x1037e2800>#<Skill:0x1037e21e8>#<Skill:0x1037e1090>#<Skill:0x1037e0848>

所以,是的,我想比较两个用户的技能并返回匹配的数字。谢谢你的帮助。

1 个答案:

答案 0 :(得分:6)

这有效:

a = %w{house dog cat car}
b = %w{cat book box car}
(a & b).size

文档:http://www.ruby-doc.org/core/classes/Array.html#M000274

要使用名称将类转换为数组,请尝试类似:

class X
  def name
    "name"
  end
end
a = [X.new]
b = [X.new]
(a.map{|x| x.name} & b.map{|x| x.name}).size

在您的示例中,a是current_user.skills,b是other_users.skills。当map动作循环遍历数组时,x只是对数组当前索引的引用。该行动记录在我提供的链接中。