在 Ruby 中嵌套每个 do 循环意外打印
Nested each do loops printing unexpectedly in Ruby
我有两个包含字符串的数组。我正在尝试使用嵌套的 .each do 循环遍历两个数组,以查看第一个数组中的任何元素是否具有第二个数组中任何元素的子字符串。我正在使用 .include?在嵌套循环中检查这一点。我希望结果是打印出它与 partials 中的元素匹配的次数的字符串。
这是行不通的方法
def orphanCheck(partials, partials1, duplicatesArray)
partials1.each do |i|
partials.each do |j|
if i.include?(j)
duplicatesArray.push(i)
end
end
end
end
我将其用作定义 partials 和 partials1 的辅助方法
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 三次。例如,如果 yahoo.com 在 partials 中三次,那么我希望 me@yahoo.com (来自 partials1)被推送到 duplicatesArray 三次。
为确保您可以这样做:
partials1.each do |i|
i_ups=i.split('@')[-1]
partials.each do |j|
if i_ups===j
duplicatesArray.push(i)
break
end
end
end
如果我理解正确(partials 只是电子邮件提供商的主机部分,partials1 是完整的电子邮件地址)
应该为您提供正确的 duplicatesArray 的更好解决方案是:
partials1.each do |email_address|
email_host = email_address.split("@").last
duplicatesArray.push(email_address) if partials.include?(email_host)
end
我有两个包含字符串的数组。我正在尝试使用嵌套的 .each do 循环遍历两个数组,以查看第一个数组中的任何元素是否具有第二个数组中任何元素的子字符串。我正在使用 .include?在嵌套循环中检查这一点。我希望结果是打印出它与 partials 中的元素匹配的次数的字符串。
这是行不通的方法
def orphanCheck(partials, partials1, duplicatesArray)
partials1.each do |i|
partials.each do |j|
if i.include?(j)
duplicatesArray.push(i)
end
end
end
end
我将其用作定义 partials 和 partials1 的辅助方法
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 三次。例如,如果 yahoo.com 在 partials 中三次,那么我希望 me@yahoo.com (来自 partials1)被推送到 duplicatesArray 三次。
为确保您可以这样做:
partials1.each do |i|
i_ups=i.split('@')[-1]
partials.each do |j|
if i_ups===j
duplicatesArray.push(i)
break
end
end
end
如果我理解正确(partials 只是电子邮件提供商的主机部分,partials1 是完整的电子邮件地址)
应该为您提供正确的 duplicatesArray 的更好解决方案是:
partials1.each do |email_address|
email_host = email_address.split("@").last
duplicatesArray.push(email_address) if partials.include?(email_host)
end