Nesting For Loops I need help. Thanks

Tell us what’s happening:
Would someone like to explain to me what it means “(var j=0; j < arr[i].length; j++)”, the code in bold is what I don’t understand. Why should [i] be put in the “arr” of the internal loop?

I appreciate your help.

Your code so far


function multiplyAll(arr) {
  var product = 1;
  // Only change code below this line
  
  for(var i=0; i < arr.length; i++){
    for(var j=0; j < **arr[i].length;** j++){
      console.log(arr[i][j]);
    }
  }

  // Only change code above this line
  return product;
}

// Modify values below to test your code
multiplyAll([[1,2],[3,4],[5,6,7]]);

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36.

Link to the challenge:
https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript/nesting-for-loops

arr[i] is an array within an array.

j is an index position on that array, so you’re making sure you don’t get stuck in an infinite loop by exceeding the length of that array. Essentially think of arr[i] as the name of the array you are iterating with j.

1 Like

Thank you very much for your reply.

In case you have three arrays such as “Arr = [[9,8],[[1,4],5],[6,7]]” Should my for loop be like this?

var arr = [[9,8],[[1,4],5],[6,7]];

for(var i=0; i < arr.length; i++){
  for( var j=0; j < arr[i].length; i++){
    for( var k=0; k < arr[i][j].length; k++){
      console.log(arr[i][j][k]);
    }
  }
}

yes, and no, wth this you will print to the console only things that are in the lowest level array - you need to consider that a number doesn’t have a length, and the k loop it is not executed so the other things are not printed - there are other ways for this that you will learn later

I didn’t understand much of what you just explained to me, but if you tell me I’ll learn it later, that’s fine.

Sorry for the inconvenience but thank you very much for your help.