在js中在forloop内部或外部声明和数组之间的区别



我试图创建一个2D数组,但当我声明它时,我不知道它的大小。当我试图在循环外添加一些值时,无论添加多少值,都没有问题。但当我试图在for循环中做同样的事情时,我没有得到同样的结果,我的数组中有一些空格。我不知道我在循环内外所做的事情有什么区别

let Vs = []

let Ts = []
Ts[0] = []
Ts[0][0] = ' test'
Ts[0][1] = ' test1' 
Ts[1] = []
Ts[1][0] = ' test2'
Ts[1][1] = ' test3' 
Ts[2] = []
Ts[2][0] = ' test4'
Ts[2][1] = ' test5' 
console.error('TS : ' + Ts)
for (let i = 0; i < 3; i++) {
const V = i;
Vs[i] = []
Vs[i][i] = V
let y = i + 1
Vs[i][y] = V
console.error(Vs)
}

我认为您在循环中的作业中有点迷失了方向。也许以下是你想要的更多?

let Vs = [], pre='test';
let Ts = [];
Ts[0] = []
Ts[0][0] = ' test'
Ts[0][1] = ' test1' 
Ts[1] = []
Ts[1][0] = ' test2'
Ts[1][1] = ' test3' 
Ts[2] = []
Ts[2][0] = ' test4'
Ts[2][1] = ' test5' 
console.log('TS:', Ts)
for (let i = 0; i < 3; i++) {
const V = 2*i;
Vs[i] = []
Vs[i][0] = pre+V
Vs[i][1] = pre+(V+1)
}
console.log(Vs)

好的,在查看了您的代码后,以下是为什么您会得到空格,

在代码块中

for (let i = 0; i < 3; i++) {
const V = i;
Vs[i] = []
Vs[i][i] = V
let y = i + 1
Vs[i][y] = V
console.error(Vs)
}

您正在执行以下操作:

Vs[i] = []在您的矩阵中创建一条新行

然后在新行的第i列插入一个值V,这意味着根据i的值会得到空格,如果i不为0,那么该行的第一个索引将为空!

然后你要做的是在Vs[i][y]的一个位置后插入一个值,但在下一次迭代中,你要移到一个新行并递增i,在每一行留下更多的空格。。。

最新更新