Javascript 嵌套循环不是 returns 预期的外循环索引
Javascript nested loop not returns outer loop's index as expected
const a = 3
const b = 4
const arr = new Array(a).fill([]);
for (let i = 0; i < a; i++) {
for (let j = 0; j < b; j++) {
arr[i][j] = i;
}
}
console.log(JSON.stringify(arr))
我希望 return
[[0,0,0,0],[1,1,1,1],[2,2,2,2]]
但是 returns
[[2,2,2,2],[2,2,2,2],[2,2,2,2]]
我认为这不是因为关闭的原因,但请让我知道这段代码没有按预期工作的问题是什么。
* 已编辑 -> 对不起,我忘了粘贴初始化 arr 代码 *
不要直接在二维数组中赋值。先初始化第一个维度。
var arr = []
const a = 3
const b = 4
for(let i=0; i<a; i++){
arr.push([])
for(let j=0; j<b; j++){
arr[i][j] = i;
}
}
console.log(arr)
不要像这样初始化你的数组:
const arr = new Array(a).fill([]);
通过这样做,您可以传递引用而不是值,就像您可以对整数所做的那样。引用和值之间的区别很重要。
我发现 post 另一个关于 Array.fill() 的问题,其他人有同样的问题。
const a = 3
const b = 4
const arr = new Array(a).fill([]);
for (let i = 0; i < a; i++) {
for (let j = 0; j < b; j++) {
arr[i][j] = i;
}
}
console.log(JSON.stringify(arr))
我希望 return
[[0,0,0,0],[1,1,1,1],[2,2,2,2]]
但是 returns
[[2,2,2,2],[2,2,2,2],[2,2,2,2]]
我认为这不是因为关闭的原因,但请让我知道这段代码没有按预期工作的问题是什么。
* 已编辑 -> 对不起,我忘了粘贴初始化 arr 代码 *
不要直接在二维数组中赋值。先初始化第一个维度。
var arr = []
const a = 3
const b = 4
for(let i=0; i<a; i++){
arr.push([])
for(let j=0; j<b; j++){
arr[i][j] = i;
}
}
console.log(arr)
不要像这样初始化你的数组:
const arr = new Array(a).fill([]);
通过这样做,您可以传递引用而不是值,就像您可以对整数所做的那样。引用和值之间的区别很重要。
我发现 post 另一个关于 Array.fill() 的问题,其他人有同样的问题。