首页 > 解决方案 > For循环更改传递下来的数组

问题描述

我有以下代码对数组进行一些操作,在这种情况下,[[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;
}

在函数 M 中注释掉 for 循环后,我看到该数组[[1,2],[3,4]]已在控制台上注销。但是当我取消注释 for 循环时,我看到的只是[[0,0],[0,0]]我正在记录数组的所有位置。

对我来说,在控制台发生任何日志记录之前,for 循环似乎在数组上循环。这是怎么回事?如果不是,为什么它[[0,0],[0,0]]甚至在 for 循环开始之前就注销了?

提前致谢。

标签: javascriptarraysreactjs

解决方案


因为它通过引用传递,并且当您更改输入时,您会更改数组


推荐阅读