typescript - Array.fill() 然后更改二维数组中的值会为 JS 中的列提供相同的输出
问题描述
所以我用 0 填充了这个二维数组,然后改变了这个二维数组第一行的第一个值,但是它改变了每一行的第一个值,有人知道为什么会这样吗?
let arr = Array<number[]>(5).fill(Array<number>(5).fill(0));
arr[0][0] = 10;
console.log(arr);
输出
[
[ 10, 0, 0, 0, 0 ],
[ 10, 0, 0, 0, 0 ],
[ 10, 0, 0, 0, 0 ],
[ 10, 0, 0, 0, 0 ],
[ 10, 0, 0, 0, 0 ]
]
预期产出
[
[ 10, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0 ]
]```
解决方案
Array.prototype.fill()
将数组中的每个元素设置为指定值。要生成一个填充了可能不同的值的数组,您可以使用Array.from()
:
let arr = Array.from({ length: 5 }, () => Array<number>(5).fill(0));
推荐阅读
- python - Pandas 列值比较和过滤其他列 Series 的真值不明确 Error: a.any() or a.all()
- html - 在 HTML 中使星期六和星期日不可选择
- jflex - JFlex 参数化令牌
- pic - 将 PIC24E 与 ICD3 连接
- c# - 使用get-set实现const DateTime?
- angular - 在继续打字之前等待函数执行完成
- java - 重新启动应用程序时,如何在 EditText 中保留字符串/int 值?
- node.js - 得到“承诺{
“Log.save();”处的错误 - Mongodb - php - 如何从 PhpStorm 调试 Docker 容器中的测试和/或运行代码
- gitlab - 为什么 gitlab 备份 [跳过] 一些存储库?