使用新的array().fill(0)错误创建2D数组
Create 2D array using new Array().fill(0) bug?
我想创建一个2d数组,但我发现了一个有趣的行为
const column = 10;
const row = 10;
let matrix = new Array(row).fill(new Array(column).fill(0));
matrix[0][1] = 1;
console.log(matrix)
令我惊讶的是,我得到的结果如下:
0 2 0 0 0 0 0 0 0 0
0 2 0 0 0 0 0 0 0 0
0 2 0 0 0 0 0 0 0 0
0 2 0 0 0 0 0 0 0 0
0 2 0 0 0 0 0 0 0 0
0 2 0 0 0 0 0 0 0 0
0 2 0 0 0 0 0 0 0 0
0 2 0 0 0 0 0 0 0 0
0 2 0 0 0 0 0 0 0 0
0 2 0 0 0 0 0 0 0 0
整个列编号1都设置为1,我可以知道我为什么会出现这种行为吗?
Array#fill
方法填充相同的数组,元素是对单个数组的引用。因此,您需要创建单独的数组作为元素。所以更新一个将反映所有其他,因为它们不是不同的数组,它们是相同的。
使用Array.from()
可以通过映射函数创建和生成值。
const column = 10;
const row = 10;
let matrix = Array.from({
// create array of length `row`
length: row
// map function to generate values
}, () => new Array(column).fill(0));
matrix[0][1] = 1;
console.log(matrix)
@PranavCBalan有权。
它是这样的:
let matrix = new Array(row);
var x = new Array(column).fill(0);
matrix[0] = matrix[1] = .. = matrix[column - 1] = x;
矩阵是一个对象的数组。
相关文章:
- 错误:自动化服务器可以't创建对象
- 在量角器中创建一个.txt错误输出文件是手动的,而不是控制台错误
- sailsjs在创建两个模型时的错误处理
- 创建对象函数原型和代码是错误的
- 如何在不创建格式错误的HTML标记的情况下分解字符串
- 使用jquery创建dom元素会导致ie9出现拒绝访问错误
- 动态创建的iframe中的window.onerror在lne 0处给出脚本错误
- javascript创建日期的月份错误
- 表单在由ajax部分Ruby创建时有错误的操作
- 动态创建的 jQuery UI 对话框错误后 jQuery 2.2.0 升级
- 创建节点时出现 Javascript DOM 错误
- 创建 JavaScript 构造函数时的语法错误
- 未捕获的类型错误:未定义不是函数,在中为循环创建了对象
- 谷歌地图API多段线创建失败;未捕获类型错误:数字不是函数;
- 如何创建角度承诺中捕获的错误
- HighCharts:创建股票图表时出现的奇怪错误
- 未定义的错误:创建带有返回HTML元素函数的对象
- WebRTC错误:创建远程会话描述失败.在错误的状态下调用
- 使用新的array().fill(0)错误创建2D数组
- 错误创建包含jquery的js文件