Direct equivalent is probably

repeat with i = 0 to myArrayLength-1
   put i-1 into j
   if j < 0 then put myArrayLength-1 into j
   .....
end repeat

OR, if you prefer a single-statement version

repeat with i = 0 to myArrayLength-1
   put (i + myArrayLength-1) mod myArrayLength  into j
   .....
end repeat

OR - most efficient but risky - i.e. a bad choice iMHO :-)

put myArrayLength-1 into j
repeat with i = 0 to myArrayLength-1
   .....
   put i into j   -- NB at the very end of the loop body
end repeat

This is risky in case you ever do a "next repeat" inside the loop body !!

Alex.

On 17/05/2022 07:35, jbv via use-livecode wrote:
Hi list,

What is the best and most efficient way to write the following
javascript loops in LC ?

for (let i = 0, j = myArray.length - 1; i < myArray.length; j = i++) {
}

This goes beyond simple nested loops.
So far, because of lack of time, I have pre-calculated the successive
values of i and j, and have put them into lists of words :
0 1 2 3 4 5
5 0 1 2 3 4
it remains fast enough for what I need to do, but there must be a more elegant approach...

Thanks.
jbv

_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
  • Nested loops jbv via use-livecode
    • Re: Nested loops Alex Tweedly via use-livecode

Reply via email to