есть только 1 вложенный массив, а не n раз массив.

ал некоторые обучающие задания для моего курса JS, и у меня есть такая, где вы должны реализовать функцию, которая принимает положительное целое число (n) и возвращает матрицу, подобную приведенной ниже (5 было пройдено):

[ [ 1, 0, 0, 0, 0 ],
  [ 0, 1, 0, 0, 0 ],
  [ 0, 0, 1, 0, 0 ],
  [ 0, 0, 0, 1, 0 ],
  [ 0, 0, 0, 0, 1 ] ]

Я смог реализовать функцию с помощью следующего кода:

function getIdentityMatrix(n) {
  const mat = new Array(n).fill([]);
  return mat.map((row, index) => {
    row = new Array(n).fill(0);
    row[index] = 1;
    return row;
  });
}

Но при этом я обнаружил странное поведение, которое не могу объяснить ... Если я немного изменю код:

function getIdentityMatrix(n) {
  const mat = new Array(n).fill(new Array(n).fill(0));
  return mat.map((row, index) => {
    row[index] = 1;
    return row;
  });
}

Это возвращает матрицу как это:

[ [ 1, 1, 1, 1, 1 ],
  [ 1, 1, 1, 1, 1 ],
  [ 1, 1, 1, 1, 1 ],
  [ 1, 1, 1, 1, 1 ],
  [ 1, 1, 1, 1, 1 ] ]

Почему это так работает? Это похоже на то, что функция forEach выполняет итерацию по всем элементам, вложенным в каждую строку, чего не должно быть.

Спасибо за любые советы!

Ответы на вопрос(3)

Ваш ответ на вопрос