0

I am using angularjs. I have two for loops, one incrementing as 0, 2 and other as 1, 3... Is there a more elegant way to do this? Such as, a variable which alternates its value for every loop iteration so that the two loops can be combined? Thanks.

for ( jCounter= 0; jCounter< truthArray.length; jCounter+=2 ) {
    for ( iCounter= 0 ; iCounter< truthArray.length; iCounter++ ) {
        if (index.indexOf(iCounter) === jCounter&& index.indexOf(iCounter) !== -1) {
            last[iCounter] = 'left';
        }
    }
}
            
for ( jCounter= 1; jCounter< truthArray.length; jCounter+=2 ) {
    for ( iCounter= 0 ; iCounter< truthArray.length; iCounter++ ) {
        if (index.indexOf(iCounter) === jCounter&& index.indexOf(iCounter) !== -1) {
            last[iCounter] = 'right';
        }
    }
}
Tommy
  • 2,355
  • 1
  • 19
  • 48
Aadi
  • 17
  • 5

3 Answers3

0

This will do the work

for ( jCounter= 0; jCounter< truthArray.length; jCounter++ ) {
  for ( iCounter= 0 ; iCounter< truthArray.length; iCounter++ ) {
    if (index.indexOf(iCounter) > -1 && index.indexOf(iCounter) === jCounter) {
      last[iCounter] = jCounter%2 == 0 ? 'left' : 'right';                            
    }
  }
}
Shyam Tayal
  • 486
  • 2
  • 13
0

You can use modulo % to know if it's an odd or even number.

for (let jCounter = 0; jCounter< truthArray.length; jCounter++ ) {
    for (let iCounter = 0 ; iCounter< truthArray.length; iCounter++ ) {
        if (index.indexOf(iCounter) === jCounter && index.indexOf(iCounter) !== -1) {
            last[iCounter] = jCounter % 2 === 0 ? 'left' : 'right';
        }
    }
}

Also, you should declare a variable before using it (jCounter and iCounter). In strict mode is forbidden.

Maor Refaeli
  • 2,417
  • 2
  • 19
  • 33
0

Try do this format...

for ( jCounter= 0; jCounter< truthArray.length; jCounter++ ) {

   for ( iCounter= 0 ; iCounter< truthArray.length; iCounter++ ) {

                   //write something here.

} }

BingHao
  • 31
  • 1
  • 6