2011-07-27 58 views
1

我有兩個數組,我想看看他們是陣列之間的單個項目之間的匹配總數。匹配軌道中的數組項目

對於例如數組:

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>

所以,是的,我想比較這兩個用戶的技能和返回匹配的數量。謝謝你的幫助。

回答

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 

在您的例子,一個是CURRENT_USER。技能和b是other_users.skills。 x是map操作在數組中循環時對數組當前索引的簡單引用。該行動記錄在我提供的鏈接中。

+0

+1,即使我更喜歡「ab」:) – apneadiving

+0

做ab會保持重複在那裏,並會返回更大的元素存在於一個但不是在b,這聽起來不像想要的,雖然兩者爲示例數據工作。 – Gazler

+0

我已經創建了一個鍵盤示例來說明我的意思。 http://codepad.org/u5FVaPcF – Gazler