代码之家  ›  专栏  ›  技术社区  ›  Ben W.

在Ruby中嵌套每个do循环意外打印

  •  0
  • Ben W.  · 技术社区  · 8 年前

    这种方法行不通

    def orphanCheck(partials, partials1, duplicatesArray)
      partials1.each do |i|
        partials.each do |j|
          if i.include?(j)
            duplicatesArray.push(i)
          end
        end
      end
    end
    

    def manipulate(monthEmails, todayEmails, partials, partials1)
      monthEmails.each do |i|
        email = EmailAddress.new(i.to_s)
        partials.push(email.host_name.to_s)
      end
      todayEmails.each do |j|
        todaySignup = j.to_s.slice(11, 100)
        partials1.push(todaySignup)
      end
    end 
    

    manipulate(allUnique, todayEmails, partials, partials1)
    
    orphanCheck(partials, partials1, duplicatesArray)
    #puts duplicatesArray
    

    duplicatesArray正在打印一些不应该匹配的字符串,并且它打印一些字符串的次数超过了我想要的次数。例如,gmail。com根本不在partials中,但me@gmail.com一次出现在partials1中,三次被推到duplicatesArray。如果雅虎。com在partials中有三次,那么我想me@yahoo.com例如,(来自partials1)被推送到duplicatesArray三次。

    2 回复  |  直到 8 年前
        1
  •  0
  •   m3characters    8 年前

    为了确保你可以做到:

      partials1.each do |i|
        i_ups=i.split('@')[-1]
        partials.each do |j|
          if i_ups===j
            duplicatesArray.push(i)
            break
          end
        end
      end
    

        2
  •  0
  •   Andrew Sullivan    8 年前

    partials1.each do |email_address|
      email_host = email_address.split("@").last
      duplicatesArray.push(email_address) if partials.include?(email_host)
    end