I tried looking into this with a For/Of loop and got the same result as (or probably similar to) @Krishna_Kishore.
I logged the scene.meshes.length after each loop and was left with 2. This matched the number of meshes still visible in the scene. Is this happening because the loop already passed over the first two items in the list, and then items 4 and 5 became the new 1 and 2?
P.S. @Deltakosh’s While loop definitely worked, I’m just not sure why the other loops aren’t working.