だが、私はこのようなプログラムがあるとしましょう許可:選択アレイアイテム、部分一致
class Student
attr_reader :first_name, :last_name, :subject, :color
def initialize(first_name, last_name, subject, color)
@first_name = first_name
@last_name = last_name
@subject = subject
@color = color
end
def keywords
[] << @first_name << @last_name << @subject << @color
end
end
student1 = Student.new('john', 'smith', 'math', 'blue')
student2 = Student.new('ann', 'smitten', 'english', 'blue')
students = [student1, student2]
students.select do |student|
...
end
私は次のことを達成しようとしている:
1)の配列を選択私Student.keywords配列
2)と私のquery
に一致する学生は私のquery
また、単一の単語
3)の場合の配列ですquery
が部分的にでもkeyword
と一致することはstudent1
するための一例のキーワードは、 "一致"
だ、次のとおりです。 ['john', 'smith', 'math', 'blue']
次query
配列のいずれかがMATCH
['j', 'mat']
IS、['it', 'blue', 'green']
のいずれか続くquery
配列は一致しません
['johny']
,['johny', 'smithy', 'mathy', 'bluegreen']
これはどのように書きますか?私は何時間も頭を掻いていて、喜びはありませんでした!
また、私は1000以上の配列要素を反復処理する必要があるので、かなりパフォーマンスが必要です。純粋なルビー溶液も必要です。
'['it'、 'blue'、 'green']'は一致しません。 –
コード:http://pastebin.com/5X4WwmJL。そのコアは '.grep(Regexp.new(キーワード))'部分です。配列をフィルタリングし、キーワードを含む要素だけを残します。 –
もし一致する単語や部分的な単語があれば['it'、 'blue'、 'green']は一致します –