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

时间:2019-01-01 00:57:55

标签: javascript arrays loops

我试图使它起作用,但是外循环在第二次迭代后停止,并且它后面的所有内容都不执行(就像脚本的结尾一样)。我想用任何字符填充二维数组(这里我以“ 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列)用相同的字符填充此数组,因此,如果该方法没有希望,我将很高兴看到一个可行的方法

5 个答案:

答案 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'));