我有两个数组,我希望看到匹配的总数,在数组之间的各个项目。
例如:
的数组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>
所以,是的,我想比较两个用户的技能并返回匹配的数字。谢谢你的帮助。
答案 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只是对数组当前索引的引用。该行动记录在我提供的链接中。