Не вижу причин ограничиваться какими-то конкретными числами, сделаем функцию, создающую таблицу любого размера, какой укажут - количества строк и столбцов будут её параметрами.
Циклы есть:
function createTable(
rows,
cols,
{
rowSeparator = '\n',
colSeparator = ' ',
} = {},
) {
const zeros = '0'.repeat(Math.ceil(Math.log10(rows * cols + 1)));
const result = [];
for (let i = 0; i < rows; i++) {
i && result.push(rowSeparator);
for (let j = 0; j < cols; j++) {
j && result.push(colSeparator);
result.push((zeros + (cols * i + j + 1)).slice(-zeros.length));
}
}
return ''.concat(...result);
}
Циклов нет (в явном виде):
function createTable(
rows,
cols,
{
rowSeparator = '\n',
colSeparator = ' ',
} = {},
) {
const { length } = `${rows * cols}`;
return Array.from({ length: rows }, (_, i) =>
Array.from({ length: cols }, (_, j) =>
`${cols * i + j + 1}`.padStart(length, 0)
).join(colSeparator)
).join(rowSeparator);
}
Примеры использования:
console.log(createTable(11, 9));
console.log(createTable(10, 10));
document.body.innerHTML = createTable(16, 16, {
rowSeparator: '<br>',
colSeparator: '____',
});