I have a nested loop2(check2) in loop1(check1) but it seems that nested loop2(check2) only runs once.
Both loops contain the same array. This script is used to check for a duplicate id in check1.
check1=["0", "0", "0", "1", "1", "2", "3", "4", "5", "100", "4294967294", "9", "11", "6", "200", "7", "201", "811", "202", "204", "3000", "205", "3001", "3001", "3001"]
check2 =["0", "0", "0", "1", "1", "2", "3", "4", "5", "100", "4294967294", "9", "11", "6", "200", "7", "201", "811", "202", "204", "3000", "205", "3001", "3001", "3001"]
Code:
check1.each do |check1|
counter=0
puts "checking against:"+check1.to_s
check2.each do |check2|
puts "checking:"+check1.to_s+"|"+check2.to_s
if check1 == check2
counter += 1
end
end
if counter > 1
dupUID << check1
end
end
The result:
checking against:0 <- checking the 1st element in check1
checking:0|0
checking:0|0
checking:0|0
checking:0|1
checking:0|1
checking:0|2
checking:0|3
checking:0|4
checking:0|5
checking:0|100
checking:0|4294967294
checking:0|9
checking:0|11
checking:0|6
checking:0|200
checking:0|7
checking:0|201
checking:0|811
checking:0|202
checking:0|204
checking:0|3000
checking:0|205
checking:0|3001
checking:0|3001
checking:0|3001
checking against:0<- checking the 2nd element in check1
checking:0|3001 <- nested loop2(check2) is not looping again on the 2nd element of loop 1
checking against:0
checking:0|3001 <- loop2 stops at the last element for the remaining elements in check1
checking against:1
checking:1|3001
checking against:1
checking:1|3001
checking against:2
checking:2|3001
checking against:3
checking:3|3001
checking against:4
checking:4|3001
checking against:5
checking:5|3001
checking against:100
checking:100|3001
checking against:4294967294
checking:4294967294|3001
checking against:9
checking:9|3001
checking against:11
checking:11|3001
checking against:6
checking:6|3001
checking against:200
checking:200|3001
checking against:7
checking:7|3001
checking against:201
checking:201|3001
checking against:811
checking:811|3001
checking against:202
checking:202|3001
checking against:204
checking:204|3001
checking against:3000
checking:3000|3001
checking against:205
checking:205|3001
checking against:3001
checking:3001|3001
checking against:3001
checking:3001|3001
checking against:3001
checking:3001|3001
Can anyone point out my mistake? Thanks a lot. Solved: Thanks to all!
check1.each do |ch1|
counter=0
check2.each do |ch2|
if ch1 == ch2
counter += 1
end
end
if counter > 1
dupUID << ch1
end
end
puts dupUID
counter > 1, notcounter > 0as there will always be 1 matching element from the other array since they are identical. I'm sure there are much better ways of doing this if you can explain what you are trying to do here.