Entonces estoy tratando de resolver
Cree una función fizzbuzz que tome un número, n. fizzbuzz debe recorrer los números del 1 al n e insertar cada número en la matriz de resultados usando las siguientes reglas:
- Empuje la cadena "fizz" en lugar de números divisibles por 3.
- Empuje la cadena "zumbido" en lugar de números divisibles por 5.
- Empuje la cadena "fizzbuzz" en lugar de números divisibles por 3 y 5.
Ejecute la prueba console.log para verificar su trabajo. "
Mi código se encuentra a continuación
const results = []; const fizzbuzz = (n) => { for (let i = 1; i <= n; i++) { let str = ""; if (i % 3 === 0) str += "fizz" if (i % 5 === 0) str += "buzz" if (str === "") str = i; console.log(str); } }Realmente no sé cómo cambiar mis resultados para que estén dentro de la matriz "resultados". Mi suposición es usar array.push pero no sé dónde incluirlo en el código.
Solo necesita declarar su matriz en blanco dentro de su función, usar el método Array push y luego devolver la matriz al final de la función.
const fizzbuzz = (n) => { const results = []; for (let i = 1; i <= n; i++) { let str = ""; if (i % 3 === 0) str += "fizz" if (i % 5 === 0) str += "buzz" if (str === "") str = i; results.push(str); } return results; }Solo por diversión, aquí hay una mejor manera de resolverlo usando operadores ternarios . Este método solo requiere 2 comprobaciones.
const fizzbuzz = (n) => { const results = []; for (let i = 1; i <= n; ++i) { results.push( i % 3 === 0 ? (i % 5 === 0 ? 'fizzbuzz' : 'fizz') : (i % 5 === 0 ? 'buzz' : i) ); } return results; }Al contrario de lo que dije en mi comentario a la respuesta de @ruleboy, ahora proporcioné una versión muy "nerd" de fizzbuzz sin usar el operador de módulo en absoluto.
En mi fragmento utilizo tres contadores: i , n3 y n5 . El resultado no es fácil de leer , por lo que nunca recomendaría usarlo en ningún código de producción . Pero pensé que podría ser entretenido echarle un vistazo, no obstante:
function fizzbuzz(n){ const results = []; for (let i=1,n3=2,n5=4; i<=n; ++i,n3--?0:n3+=3,n5--?0:n5+=5) { results.push(n3?n5?i:"buzz":"fizz"+(n5?"":"buzz")); } return results; } console.log(fizzbuzz(30)) La expresión n3--?0:n3+=3,n5--?0:n5+=5 decrementa los contadores n3 y n5 . Cada vez que cualquiera de los contadores alcanza el valor -1 (p. ej.: n3--==false ) vuelvo a agregar el valor máximo a cada contador (3 o 5). Muy nerd, como ya mencioné anteriormente. :D
Desea agregarlo a la matriz cada vez que lo imprima, así que llame a push en lugar de a console.log() :
const results = []; const fizzbuzz = (n) => { for (let i = 1; i <= n; i++) { let str = ""; if (i % 3 === 0) str += "fizz" if (i % 5 === 0) str += "buzz" if (str === "") str = i; results.push(str) //Adding to array instead } }