如何在javascript中填充多维数组?

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 列),所以如果这种方法没有希望,我会很高兴看到一个有效的方法。

Kei*_*mas 8

这可以在一行中完成工作。

var A = Array(12).fill(null).map(()=>Array(81).fill('q'))

正如哈鲁努尔汉评论的那样,这是一系列参考资料和一个坏主意。

var A = Array(12).fill(Array(81).fill('q'));

  • 在这种情况下,A 的所有元素都将引用相同的数组引用,因此修改 A[i][j] 也会修改 A[0...11][j] (12认同)

Moh*_*faq 6

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)


joh*_*roy 5

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)