如何生成一个包含表头的乘法表作为二维数组



我想创建一个函数,该函数将生成一个包含标题行和标题列的乘法表。

函数必须有3个参数:

  • col-列中数字的(整数(起始值
  • row-行中数字的(整数(起始值
  • size-表的(整数(大小

调用table(1,3,4)必须给出以下结果:

[ 
[null, 1, 2, 3, 4], 
[3, 3, 6, 9, 12], 
[4, 4, 8, 12, 16], 
[5, 5, 10, 15, 20], 
[6, 6, 12, 18, 24] 
] 

注意:

  • 标题行中的数字从1(第一个参数(开始
  • 第一列下的数字从3开始(第二个参数(
  • 该表包含4(第三个参数(非标题行和列,总大小为5行和列

到目前为止,我有这段代码(如下(,但我如何将值放在里面?

let table = new Array(++size);

for(let i = 0; i < table.length; i++) {
table[i] = new Array(size);
}

还有更多的要求,但我不知道如何实现。

  • table[0]用列标题描述行
  • table[0][0]总是null——这将对应于表左上角的一个空单元格
  • table[i][0]描述行标题(其中i是任何索引(
  • table[0][j]描述列标题(其中j是任何索引(
  • table[0][1]等于col
  • table[1][0]等于row
  • table[i][j]等于两个数字的乘积:table[i][0]table[0][j]
function table(col_start, row_start, size){
let table = new Array(size+1);
for(let i = 0; i < table.length; i++) {
table[i] = new Array(size+1);
}

table[0][0]=null
for(let i = 1; i < size+1; i++) {
table[0][i] = col_start+i-1
}
for(let i = 1; i < size+1; i++) {
table[i][0] = row_start+i-1
}
for(let i = 1; i < size+1; i++) {
for(let j = 1; j < size+1; j++) {
table[i][j] = table[0][j]*table[i][0]
}
}
return table
}```

首先,JavaScript不提供多维数组。如果你想制作一个——下面是你的方法(它不会是多维数组,但你可以让它像它一样工作(。

function multiDimensional(r,c){  // r = number of rows, c = columns
const arr = Array.from({length : 5}, ()=>[]); //creates an array with 5 empty arrays in it.
let count = 0;
while(count !== r){    //count is index of the empty arrays inside the array.
for(let i = 0; i < r*c; i++){    // r*c is size of array.
arr[count].push(i);      //pushing values inside subarrays. e.g. arr[0].push(0)

if(i !== 0 && (i+1) % 5 === 0){  //incrementing count after every 5 loop repetitions
count++;
}
}
}
console.log(arr[1][0]) // now u can use arr[a][b] notation.
return arr;
}
multiDimensional(5,5);

所需的表看起来是这样的(不要忘记数组从0开始,所以行1实际上是行0,列也是如此(-

arr = [
[0, 1, 2, 3, 4]  // place value = 00, 01, 02, 03, 04  or simply r0c0, r0c1 etc
[5, 6, 7, 8, 9]    // place value = 10, 11, 12, 13, 14
[10, 11, 12, 13, 14]   // place value = 20, 21, 22, 23, 24
[15, 16, 17, 18, 19]   // place value = 30, 31, 32, 33, 34
[20, 21, 22, 23, 24]    // place value = 40, 41, 42, 43 44
]