无法在 JS 或 TS 中使用 'rows' 循环遍历二维数组
Can't loop through 2D array using 'rows' in JS or TS
假设,我想创建一个具有以下结构的二维数组:
[0, 1, 1, 1]
[1, 0, 0, 0]
[1, 0, 0, 0]
为了实现我的目标,首先,我创建了一个初始值为 0
:
的二维数组
function createGrid(m: number, n: number): number {
let grid: number[][] = new Array(m).fill(0).map(() => new Array(n).fill(0));
return 0;
};
然后,我将第一行(grid[0][0]
除外)的值更改为 1
:
function uniquePaths(m: number, n: number): number {
let grid: number[][] = new Array(m).fill(0).map(() => new Array(n).fill(0));
for (let i = 1; i <= m; i++) {
grid[0][i] = 1;
}
return 0;
};
同样,我尝试将第一列(grid[0][0]
除外)的值更改为1
:
function uniquePaths(m: number, n: number): number {
let grid: number[][] = new Array(m).fill(0).map(() => new Array(n).fill(0));
for (let i = 1; i <= m; i++) {
grid[0][i] = 1;
}
for (let i = 1; i <= n; i++) {
grid[i][0] = 1; // <<-- 'Throws error here`
}
return 0;
};
但是,它抛出以下错误:
grid[i] is undefined
有人可以解释一下我在这里缺少什么吗?
有两个错误:
- 当您想填充
1
时,您交换了 m
和 n
。
- 您在条件
i <=
下创建了溢出,您需要 i <
。
更正版本:
function uniquePaths(m: number, n: number): number {
let grid: number[][] = new Array(m).fill(0).map(() => new Array(n).fill(0));
for (let i = 1; i < n; i++) {
grid[0][i] = 1;
}
for (let i = 1; i < m; i++) {
grid[i][0] = 1;
}
console.log(grid);
return 0;
};
uniquePaths(3, 4);
结果:
[[0, 1, 1, 1],
[1, 0, 0, 0],
[1, 0, 0, 0]]
您可以检查索引并检查逻辑非值和 return 检查的编号。
function createGrid(m, n) {
return Array.from(
{ length: m },
(_, i) => Array.from(
{ length: n },
(_, j) => +(!i !== !j)
)
);
};
createGrid(3, 4).map(a => console.log(...a))
假设,我想创建一个具有以下结构的二维数组:
[0, 1, 1, 1]
[1, 0, 0, 0]
[1, 0, 0, 0]
为了实现我的目标,首先,我创建了一个初始值为 0
:
function createGrid(m: number, n: number): number {
let grid: number[][] = new Array(m).fill(0).map(() => new Array(n).fill(0));
return 0;
};
然后,我将第一行(grid[0][0]
除外)的值更改为 1
:
function uniquePaths(m: number, n: number): number {
let grid: number[][] = new Array(m).fill(0).map(() => new Array(n).fill(0));
for (let i = 1; i <= m; i++) {
grid[0][i] = 1;
}
return 0;
};
同样,我尝试将第一列(grid[0][0]
除外)的值更改为1
:
function uniquePaths(m: number, n: number): number {
let grid: number[][] = new Array(m).fill(0).map(() => new Array(n).fill(0));
for (let i = 1; i <= m; i++) {
grid[0][i] = 1;
}
for (let i = 1; i <= n; i++) {
grid[i][0] = 1; // <<-- 'Throws error here`
}
return 0;
};
但是,它抛出以下错误:
grid[i] is undefined
有人可以解释一下我在这里缺少什么吗?
有两个错误:
- 当您想填充
1
时,您交换了m
和n
。 - 您在条件
i <=
下创建了溢出,您需要i <
。
更正版本:
function uniquePaths(m: number, n: number): number {
let grid: number[][] = new Array(m).fill(0).map(() => new Array(n).fill(0));
for (let i = 1; i < n; i++) {
grid[0][i] = 1;
}
for (let i = 1; i < m; i++) {
grid[i][0] = 1;
}
console.log(grid);
return 0;
};
uniquePaths(3, 4);
结果:
[[0, 1, 1, 1],
[1, 0, 0, 0],
[1, 0, 0, 0]]
您可以检查索引并检查逻辑非值和 return 检查的编号。
function createGrid(m, n) {
return Array.from(
{ length: m },
(_, i) => Array.from(
{ length: n },
(_, j) => +(!i !== !j)
)
);
};
createGrid(3, 4).map(a => console.log(...a))