Javascript 多维数组数

Javascript 多维数组数,javascript,arrays,Javascript,Arrays,我必须制作一个二维数组,其中包含从1到高度^2迭代的数字。 输入为高度,如果高度为5,则输出如下: [ [ 21, 22, 23, 24, 25 ], [ 20, 19, 18, 17, 16 ], [ 11, 12, 13, 14, 15 ], [ 10, 9, 8, 7, 6 ], [ 1, 2, 3, 4, 5 ] ] 我已经编写了如下代码: function snakeLadder(height) { for (var i = 1; i <= height;

我必须制作一个二维数组,其中包含从1到高度^2迭代的数字。 输入为高度,如果高度为5,则输出如下:

[ [ 21, 22, 23, 24, 25 ],
  [ 20, 19, 18, 17, 16 ],
  [ 11, 12, 13, 14, 15 ],
  [ 10, 9, 8, 7, 6 ],
  [ 1, 2, 3, 4, 5 ] ]
我已经编写了如下代码:

function snakeLadder(height) {

  for (var i = 1; i <= height; i++) {
    var output = [];
    for (var j = 1; j < height; j++) {
      output.push(i + j);
    }
  }
  return output;
}

有人能指出我代码中的问题吗?

您需要一个外部数组来取消行移位

然后最好从0循环到小于
高度
,并与高度和偏移量1相乘以获得正确的值

功能蛇形加法器(高度){
变量温度,结果=[]
对于(变量i=0;ia.join(“”))
.as控制台包装{最大高度:100%!重要;顶部:0;}
功能蛇形加法器(高度){
var结果=[]
对于(变量i=height-1;i>=0;i--){
var行=[];

对于(var j=1;j代码的主要问题是没有将行添加到最终的结果数组中。其次,需要反转奇数行以匹配预期的输出

这是一个简洁的ES6版本,它使用
数组
构造函数上的
..
扩展运算符创建映射到二维结果数组的行和列。使用二进制
&1
在行索引
j
上测试奇偶校验,以反转设置了最低有效位的行:

constsnakeladder=(h,i=h*h)=>
[…数组(h)].map((r,j)=>{
常量行=[…数组(h)].map(c=>i--)
返回j&1?行:row.reverse();
})
;
console.log(snakeLadder(5));
试试这个:

  for (var i = 0; i < height; i++) {
      var output = [];
          if((i+2)%2 ==0){
                for (var j = 1; j <=height; j++) {
                          output.push( (i * height ) + j );
                }
          }
          else if( (i%2) ==1){
                 for (var j = height; j>0; j--) {
                           output.push( (i * height) + j );
                }
          }
     }
            return output;
    }
for(变量i=0;i
结果与问题中的结果不一样。输出不同。捕捉得好,已修复。我尝试了代码,它对高度5有效。但是,我发现,如果高度为3,即使数组正常,输出格式也不正确。输出如下:[[7,8,9],[6,5,4],[1,2,3]]它应该是3 x 3网格状的高度5输出。有什么想法吗?@AdeKurniawan输出格式不正确?你能解释更多吗?我希望它像棋盘一样,输出将显示为网格状。高度5可以,但高度3不能。逗号后,下一个数组不放在下一行,而是放在下一行同一行。这是更详细的图片。一个是它应该是什么,另一个是当前的结果。输出格式对计算机没有任何影响。这个格式是什么?人类?这是我尝试了你的代码后的输出:[21,22,23,24,25][7,8,9][4,3]修正了问题。输出对我来说是正确的。这是你现在期望的吗?
  for (var i = 0; i < height; i++) {
      var output = [];
          if((i+2)%2 ==0){
                for (var j = 1; j <=height; j++) {
                          output.push( (i * height ) + j );
                }
          }
          else if( (i%2) ==1){
                 for (var j = height; j>0; j--) {
                           output.push( (i * height) + j );
                }
          }
     }
            return output;
    }