javascript - 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 循环开始之前就注销了?
提前致谢。
解决方案
因为它通过引用传递,并且当您更改输入时,您会更改数组
推荐阅读
- excel - 如何让这个数组代码正确输出到我的消息框中?
- java - 防止在 maven-assembly-plugin 构建期间在 dependencySet 中分解胖罐子
- django - AttributeError:模块“django.db.models”没有属性“模型”
- google-apps-script - 从 Google Apps 脚本和 javascript/jQuery 中的另一个对象或数组构建对象
- python - Flask 中的 500 HTTP 异常,同时尝试通过 app.open_resource() 读取文件
- ios - Objective-C 或 Swift 中的 Jaro Winkler 距离
- netsuite - 需要一些帮助来了解如何将现有项目的实例添加到发票中
- python - 如何在不将缓冲区写入磁盘的情况下将 python 缓冲区/文件对象提供给需要文件名的库?
- routes - Nuxt.js 中不同子域的不同路由
- express - REST API 路由器转发到 Apollo GraphQL 端点