What's the best way to break from nested loops in JavaScript?
Just like Perl,
loop1: for (var i in set1) {loop2: for (var j in set2) {loop3: for (var k in set3) { break loop2; // breaks out of loop3 and loop2 } } }
as defined in EMCA-262 section 12.12. [MDN Docs]
Unlike C, these labels can only be used for continue
and break
, as Javascript does not have goto
.
I'm a little late to the party but the following is a language-agnostic approach which doesn't use GOTO/labels or function wrapping:
for (var x = Set1.length; x > 0; x--){ for (var y = Set2.length; y > 0; y--) { for (var z = Set3.length; z > 0; z--) { z = y = -1; // terminates second loop // z = y = x = -1; // terminate first loop } }}
On the upside it flows naturally which should please the non-GOTO crowd. On the downside, the inner loop needs to complete the current iteration before terminating so it might not be applicable in some scenarios.