Для цикла изменения переданного массива

#javascript #arrays #reactjs

#javascript #массивы #reactjs

Вопрос:

У меня есть следующий код для выполнения некоторой операции над массивом, в данном случае [[1,2],[3,4]] :

 export default function App() {
  const a = [
    [1, 2],
    [3, 4]
  ];
  console.log(a, "- the array a in App");
  const b = M(a);
  return (
    <div className="App">
      <h1>Magic with loops.</h1>
    </div>
  );
}
 
 function M(input) {
  console.log(input, "-- input inside M");

  const rows = input.length;
  const columns = input[0].length;

  /*for (let i = 0; i < rows; i  ) {
    for (let j = 0; j < columns; j  ) {
      input[i][j] = 0;
    }
  }*/

  console.log(input, "-- input after for loop");

  return input;
}
 

Когда цикл for закомментирован в функции M, я вижу, что массив [[1,2],[3,4]] вышел из системы на консоли. Но когда я раскомментирую цикл for, все, что я вижу, это [[0,0],[0,0]] для всех мест, в которые я регистрирую массив.

Для меня это выглядит так, как будто цикл for перебирает массив до того, как на консоли произойдет какое-либо протоколирование. Это то, что происходит? Если нет, то почему он выходит из [[0,0],[0,0]] системы еще до запуска цикла for?

Заранее спасибо.

Ответ №1:

Потому что он передается по ссылке, и когда вы меняете ввод, вы меняете массив