我试图使它起作用,但是外循环在第二次迭代后停止,并且它后面的所有内容都不执行(就像脚本的结尾一样)。我想用任何字符填充二维数组(这里我以“ q”为例)
var A=[[],[]];
for(var i=0;i<12;i++){
for(var j=0;j<81;j++){
A[i][j]='q';
}
}
它没有用,所以我放alert(i+' '+j);
看看它是否还在执行,并且,正如我之前写的那样,它在第二次外循环迭代后停止,然后忽略了其余脚本。
我想要的是在给定范围内(在这种情况下为12行,81列)用相同的字符填充此数组,因此,如果该方法没有希望,我将很高兴看到一个可行的方法
答案 0 :(得分:4)
这一步完成了工作。
var A = Array(12).fill(null).map(()=>Array(81).fill('q'))
这是一系列参考文献,正如harunurhan所说。
var A = Array(12).fill(Array(81).fill('q'));
答案 1 :(得分:1)
var A=[[], []];
^此行声明大小为1x2的二维数组。尝试以下方法:
var A = [];
for (var i = 0; i < 12; i++) {
A[i] = [];
for (var j = 0; j < 81; j++) {
A[i][j] = 'q';
}
}
答案 2 :(得分:0)
每次第一个循环运行时,您都需要为i
初始化一个新数组,并且不需要在创建数组之前设置数组的布局(将[], []
移到A
的声明)。试试这个:
var A = [];
for (var i = 0; i < 12; i++) {
A[i] = [];
for (var j = 0; j < 81; j++) {
A[i][j] = 'q';
}
}
console.log(A);
.as-console-wrapper {
max-height: 100% !important;
top: 0;
}
答案 3 :(得分:0)
const range = (start, stop, step) => Array.from({ length: (stop - start) / step }, () => 'q');
let twoDArray = []
for(i=0; i<12; i++){
twoDArray.push(range(0,81,1))
}
console.log(twoDArray)
替代
function genrateTwoDArray({
rows,
columns,
defaultValue
}){ return Array.from({ length:rows}, () => (
Array.from({length: columns}, ()=> defaultValue )
))
}
console.log(genrateTwoDArray({rows:3, columns:9, defaultValue: 'q'}))
答案 4 :(得分:0)
由于 fill()
是最简洁直观的,而且它适用于不可变值,因此我的偏好是外部 from()
和内部 fill()
:
Array.from({length: 12}, _ => new Array(81).fill('q'));