我有两个数组,我想看看数组之间的匹配总数,它们是各自的项。
例如,数组具有:
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只是对数组当前索引的引用我提供的链接中记录了该操作。