zer*_*sis 3 javascript arrays loops
我试图让它工作,但外部循环在第二次迭代后停止,并且它之后的所有内容都不会执行(就像脚本结束一样)。我想用任何字符填充二维数组(这里我以'q'为例)
var A=[[],[]];
for(var i=0;i<12;i++){
for(var j=0;j<81;j++){
A[i][j]='q';
}
}
Run Code Online (Sandbox Code Playgroud)
它不起作用,所以我alert(i+' '+j);查看它是否正在执行,并且,正如我之前所写,它在外循环的第二次迭代后停止,然后忽略脚本的其余部分。
我想要的只是让这个数组在给定范围内填充相同的字符(在这种特定情况下为 12 行,81 列),所以如果这种方法没有希望,我会很高兴看到一个有效的方法。
这可以在一行中完成工作。
var A = Array(12).fill(null).map(()=>Array(81).fill('q'))
正如哈鲁努尔汉评论的那样,这是一系列参考资料和一个坏主意。
var A = Array(12).fill(Array(81).fill('q'));
Array.from() 方法从类数组或可迭代对象创建一个新的、浅复制的 Array 实例。
function createAndFillTwoDArray({
rows,
columns,
defaultValue
}){
return Array.from({ length:rows }, () => (
Array.from({ length:columns }, ()=> defaultValue)
))
}
console.log(createAndFillTwoDArray({rows:3, columns:9, defaultValue: 'q'}))Run Code Online (Sandbox Code Playgroud)
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';
}
}
Run Code Online (Sandbox Code Playgroud)