skip to Main Content

I am currently trying to make a multiplication table of 10 with 2 nested for loops
It works somewhat, but the first indices aren’t working as intended:

my code:


var multiplicationTable = []
for (var i = 1; i <= 10; i++) {
    multiplicationTable[i] = [i]
     for (var j = 1; j <= 10; j++) {
        multiplicationTable[i][j] = i*j
    }
}

result:


[1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

[2, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

[3, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30]

[4, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40]

[5, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50]

[6, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60]

[7, 7, 14, 21, 28, 35, 42, 49, 56, 63, 70]

[8, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80]

[9, 9, 18, 27, 36, 45, 54, 63, 72, 81, 90]

[10, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

I don’t understand why the first index of each array is the same as the second,
I want to create this without that first index.

Help and how you solved it would be amazing, thank you very much!

2

Answers


  1. Array indexes start at 0. So subtract 1 from i and j to get the appropriate array indexes.

    var multiplicationTable = []
    for (var i = 1; i <= 10; i++) {
      multiplicationTable[i-1] = []
      for (var j = 1; j <= 10; j++) {
        multiplicationTable[i-1][j-1] = i * j
      }
    }
    
    console.log(multiplicationTable);
    Login or Signup to reply.
  2. Here is another approach, using Array.map():

    const n=10,res=Array(n).fill(0).map((_,i)=>
      Array(n).fill(0).map((_,j)=>
       (i+1)*(j+1)
    ))
    
    console.log(JSON.stringify(res));

    The fill(0) is necessary as .map() will not iterate over undefined array elements.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search