#javascript #arrays #function #multidimensional-array
Вопрос:
Я хочу создать функцию, которая будет генерировать таблицу умножения со строкой заголовка и столбцом заголовка.
Функция должна принимать 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]
Ответ №1:
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
}```
Комментарии:
1. Спасибо за ответ!
Ответ №2:
Прежде всего, 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 amp;amp; (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
]
Комментарии:
1. Спасибо за ответ, это
s good solution but it
немного сложно понять, когда ты новичок2. Никаких проблем, чувак. Приходите позже, когда почувствуете, что можете это понять. Тогда это будет понятно.