在Javascript中创建一个2D数组,其值为索引的乘积

问题描述 投票:0回答:1

我遇到了一个问题:

编写一个程序,它取2位数,X,Y作为输入,并生成一个二维数组。数组的第i行和第j列中的元素值应为i * j。注意:i = 0,1 ..,X-1; J = 0,1,¡Y-1。示例假设为程序提供以下输入:3,5然后,程序的输出应为:[[0,0,0,0,0],[0,1,2,3,4],[ 0,2,4,6,8]]

.....

我为它编写了以下代码:

var main=[]
function array(x,y){
    var n=x
    while(n<0){
        main.push([0])
        n-=1
    }

    for(let i=0 ; i<x ; i+=1){
        for (let j=0 ; j=y ; j+=1){
            main[i].push(i*j)
        }
        main[i].shift()
    }
    return main
}
console.log(array(2,2))

但我在VScode中运行它时遇到错误。请指导我

javascript xcode visual-studio-code
1个回答
0
投票

没有必要推送到阵列。只要x本身是一个数组,您就可以直接写入目标数组的yarray[x]索引。

你可以做的是为每个xwidth(第一个数组级别)你可以创建一个大小为y的数组,然后将x*y值写入其元素。

这可能是一种更快的方法,但我发现以下内容最具可读性。

function make2DArray(width, height) {
  const array = Array(width);
  for (let x=0; x<width; x++){
    array[x] = Array(height);
    for (let y=0; y<height; y++){
      array[x][y] = x*y;
    }
  }
  return array;
}
© www.soinside.com 2019 - 2024. All rights reserved.