数组值分配未按预期工作 Javascript
Array value assignment not working as expected Javascript
我现在正在处理的代码要求我为二维数组中的单个单元格赋值。
但是作业似乎没有按预期完成。
let b = new Array(3).fill(new Array(3).fill(0));
b[1][1] = 1;
console.log(b.toString());
我真的不明白为什么它会产生这个输出。
下面的代码给出了我期望的输出,但我真的更希望能够以类似于第一个片段的方式来完成它。
let b = []
for(let i = 0; i < 3; i++){
b.push([])
for(let j = 0; j < 3; j++){
b[i].push(0)
}
}
b[1][1] = 1
console.log(b.toString())
在您的第一个示例中,它创建了一个数组,然后将每个元素填充到该数组中。这意味着一个人的改变将反映在其他一切事物上。如果你想为每个元素构造一个新数组,那么你可以尝试映射它:
let b = new Array(3).fill(null).map(_ => new Array(3).fill(0));
b[1][1] = 1;
console.log(b.toString());
您可以使用 Array.from()
的内置映射回调来避免分配相同的数组引用
let b = Array.from({length:3}, (_,i) => Array(3).fill(i));
console.log(b)
我现在正在处理的代码要求我为二维数组中的单个单元格赋值。 但是作业似乎没有按预期完成。
let b = new Array(3).fill(new Array(3).fill(0));
b[1][1] = 1;
console.log(b.toString());
我真的不明白为什么它会产生这个输出。
下面的代码给出了我期望的输出,但我真的更希望能够以类似于第一个片段的方式来完成它。
let b = []
for(let i = 0; i < 3; i++){
b.push([])
for(let j = 0; j < 3; j++){
b[i].push(0)
}
}
b[1][1] = 1
console.log(b.toString())
在您的第一个示例中,它创建了一个数组,然后将每个元素填充到该数组中。这意味着一个人的改变将反映在其他一切事物上。如果你想为每个元素构造一个新数组,那么你可以尝试映射它:
let b = new Array(3).fill(null).map(_ => new Array(3).fill(0));
b[1][1] = 1;
console.log(b.toString());
您可以使用 Array.from()
let b = Array.from({length:3}, (_,i) => Array(3).fill(i));
console.log(b)