我遇到了一个问题:
编写一个程序,它取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中运行它时遇到错误。请指导我
没有必要推送到阵列。只要x
本身是一个数组,您就可以直接写入目标数组的y
和array[x]
索引。
你可以做的是为每个x
的width
(第一个数组级别)你可以创建一个大小为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;
}