I'm looking to optimize a loop without using a boolean conditional to check whether to perform some action if the loop terminates normally without breaking. In python I'd write this:
for x in lst:
if cond(x):
do_stuff_with(x)
break
else:
do_other_stuff()
In Coffeescript the best I can think of is to do something like this:
found = false
for x in lst
if cond x
found = true
do_stuff_with x
break
if not found
do_other_stuff()
Is there a Coffeescript idiom for this situation?
For this certain usage, you can use EcmaScript 6
.find
function. Similar method exists in Underscore.js, if you want to be compatible with browsers not supporting EcmaScript 6.However, there is no direct replacement for
for else
loop from Python. In general case, you will need to declare a boolean to store the state.