在列表上调用相同的函数并返回没有重复项的列表?

时间:2015-05-27 15:14:54

标签: ruby-on-rails ruby

我有这个功能:

medIntCategory = MedicalInterventionCategory.find_by_category_text(category.category.text)

但是现在我有一个名为类别的类别列表。

我想为每个类别执行上面的代码并返回一个medIntCategories列表,但没有重复。

有没有一种简单的方法可以做到这一点,因为我只处理整数?

简单来说:

categoryList = []
for each category in categories do
categoryList += MedicalInterventionCategory.find_by_category_text(category.category.text)
end

但重复检查

3 个答案:

答案 0 :(得分:1)

    @result=Array.new
   ##assuming that it returns an array
    medIntCategory = MedicalInterventionCategory.find_by_category_text(category.category.text)
    ##get the first category obtained
    @result << medIntCategory 
    if medIntCategory.present?
      medIntCategory.each do |m|
         ##add in same array only if not present
         if !@result.include?(m)
             @result << m.find_by_category_text(c.category.text)
         end
      end
    ##return a unique value array
    @result.flatten.compact.uniq unless @result.blank?
    end

希望帮助

答案 1 :(得分:1)

这听起来像是Array#mapArray#uniq的作业:

category_list = categories.map{|category|
  MedicalInterventionCategory.find_by_category_text(category.category.text)
}.uniq

答案 2 :(得分:0)

我认为这会起作用

    category_list = []
    categories.each do |category|
      category_list << MedicalInterventionCategory.find_by_category_text(category.category.text).distinct
    end