Escriba un programa que cree una tabla de multiplicar para la variable dada n en Javascript
Devuelve el resultado en una matriz bidimensional en cálculo variable. Los valores en esta matriz deben ser cálculos en forma de texto.
Por ejemplo, para n = 3 deberíamos obtener el siguiente resultado
1 x 1 = 1 | 1 x 2 = 2 | 1 x 3 = 3 2 x 1 = 2 | 2 x 2 = 4 | 2 x 3 = 6 3 x 1 = 3 | 3 x 3 = 6 | 3 x 3 = 9mi código es:
const number = parseInt(prompt("Enter a number : ")); let calc = new Array(number); for (let i = 1; i <= number; i++) { for (let x = 1; x <= number; x++) { const result = i * x; calc[x] = `${i} * ${x} = ${result}`; } console.log(calc); }Pero en la matriz los valores no son correctos. Que estoy haciendo mal ?
Podrías usar Array.map aquí (dos veces). Debido a que los índices de matriz se basan en cero, debe agregarles 1 para obtener el resultado.
const multiplicationTable = number => [...Array(number)] .map((n, i) => [...Array(number)] .map((v, j) => `${i+1} * ${j+1} = ${(i+1) * (j+1)}`).join(' | ')); document.querySelector(`pre`).textContent = JSON.stringify(multiplicationTable(3), null, 2); // or create/display as a multiplication table (html) const asTable = number => { const rows = [...Array(number)] .map((n, i) => `<tr><td>${i + 1}</td>${ [...Array(number)].map( (v, j) => `<td>${(i + 1) * (j + 1)}</td>`).join(``) }</tr>`); const header = `<thead><tr><th></td>${ [...Array(number)].map( (v, i) => `<th>${i+1}</th>`).join(``) }</tr></thead>`; document.body.insertAdjacentHTML(`beforeend`, `<table>${ header}${rows.join(``)}</table>`); } asTable(8) body { font: normal 12px/15px verdana, arial, sans-serif; margin: 2rem; } th { min-width: 2em; text-align: center; font-weight: bold; } td { border: 1px solid #ccc; text-align: center; } td:nth-child(1) { text-align: right; border: none; font-weight: bold; } <pre></pre>