我有两个数组,我想看看数组之间的匹配总数,它们是各自的项。
例如,数组具有:
1——房子、狗、猫、车
2——猫、书、盒子、汽车
将返回2。
有什么想法吗谢谢!
编辑/
基本上,我有两个表单(针对两种不同类型的用户),它们使用嵌套属性来存储他们拥有的技能数量。我可以通过

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>
所以,是的,我想比较两个用户的技能并返回匹配的数字。谢谢你的帮助。

最佳答案

这是有效的:

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是当前用户技能,b是其他用户技能。当map操作在数组中循环时,x只是对数组当前索引的引用我提供的链接中记录了该操作。

10-07 19:46
查看更多