2011-07-27 9 views
1

私は2つの配列を持っていますが、それらの配列の間の一致の総数を確認したいと思います。例のアレイではの配列アイテムを一致させる

: - ハウス、犬、猫、車 2 -

1猫、書籍、ボックス、カー

は2

任意のアイデアを返すでしょうか?ありがとう!/

EDITは、基本的に私は、彼らが持っているスキルの数を格納するために、ネストされた属性を使用しています(ユーザの二つの異なるタイプのための)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>

だから、はい、私は2つのユーザのスキルを比較し、一致数を返すようにしたいです。ご協力いただきありがとうございます。

答えて

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

は、名前を使用してアレイにクラスを変えるような何かしようとする:、CURRENT_USERあなたの例では

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

です。スキルとbはother_users.skillsです。 xは、マップアクションが配列をループするときの、単に配列の現在のインデックスへの参照です。アクションは、私が提供したリンクに文書化されています。

+0

でも、私は "ab"を好むかもしれません:) – apneadiving

+0

abを実行すると、そこに重複を保持し、bには存在しない要素にはより大きな値を返します。サンプルデータの作業。 – Gazler

+0

私が意味することを説明するコードパッドの例を作成しました。 http://codepad.org/u5FVaPcF – Gazler

関連する問題