javascript - 用嵌套数组计数
问题描述
我正在尝试计算嵌套数组中数组的索引 1 值。我想要的输出是:
[ [ [ 0, 0 ], [ 0, 1], [ 0, 2 ] ] ]
但是,我得到以下输出:
[ [ [ 0, 2 ], [ 0, 2 ], [ 0, 2 ] ] ]
这是我正在运行的代码,我假设问题属于第二个 for 循环:
let width = 3
let height = 1
var grid = [];
let y = 0
for(var i=0; i<height; i++) {
grid[i] = new Array(width).fill([0,0])
}
let currentRow = grid[0]
for (let j = 0; j<grid[0].length; j++){
currentRow[j][1] = j
}
感谢您的帮助!
解决方案
将您的代码更改为
let width = 3;
let height = 1;
var grid = [];
let y = 0;
for (var i = 0; i < height; i++) {
grid[i] = new Array(width);
for (let j = 0; j < grid[i].length; j++) {
grid[i][j] = [0, 0];
}
}
let currentRow = grid[0];
for (let j = 0; j < grid[0].length; j++) {
currentRow[j][1] = j;
}
当您使用时,您将在数组grid[i] = new Array(width).fill([0,0])
中保存一个实例,这意味着是,因此,当您更改所有元素时,在第二个循环的最后一步中您会更改,因此所有元素都以这种方式更改。[0,0]
grid[i]
currentRow[0]==currentRow[1]
true
currentRow[j][1]
currentRow
currentRow[2][1]=2
currentRow
推荐阅读
- ios - React Native iOS 文本有时不换行
- rust - 为什么重新借用仅适用于取消引用的指针?
- python - Python Docx:如何将列宽设置为“自动适应内容”
- c# - C# WinForms:查询结果为空时无法递增
- azure - 计时器触发的天蓝色功能不起作用 - 动态计划
- javascript - 如何让眼睛跟随div外的鼠标
- javascript - jquery中用于添加内容的字符串
- android - FileOutputStream 将 0 个字节写入 Google Drive
- javascript - 在 Ext.button.Split 按钮中显示选定的值
- c# - Xamarin:重用效果