Traté de hacer 3 condiciones en una matriz. array.forEach , pero esto me da un resultado incorrecto. ¿Es posible acortar mi código a un array.forEach ? ¿Tiene 3 condiciones dentro de él?
var array = []; // create empty array for (var i = 1; i < 101; i++) { array.push(i); // write in array all values of i, each iteration } array.forEach((number) => { if (array[number] % 3 === 0 && array[number] % 5 === 0) { array[number] = "FizzBuzz"; } }); array.forEach((number) => { // if (array[number] % 3 === 0) { array[number] = "Fizz"; } }); array.forEach((number) => { if (array[number] % 5 === 0) { array[number] = "Buzz"; } }); for (let i = 0; i < array.length; i++) { //output array elements console.log(array[i]); }Primer puntero: eso es mucho espacio en blanco.
Segundo puntero, en lugar de crear una matriz y luego recorrer esa matriz, puede hacerlo todo en un ciclo, usando el bloque if....else ; algo como esto:
for (var i = 1; i < 101; i++) { if (i % 3 === 0 && i % 5 === 0) { console.log("FizzBuzz"); } else if (i % 3 === 0) { console.log("Fizz"); } else if (i % 5 === 0) { console.log("Buzz"); } else { console.log(i); } }Está "caminando sobre" la matriz varias veces.
En mi humilde opinión, el método de matriz más importante para aprender es el mapa :
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
Que "camina sobre" el Array y devuelve un nuevo valor para ese índice Array
let arr = Array(100) .fill((x, div, label) => x % div ? "" : label) //store Function in every index .map((func, idx) => func(++idx, 3, "Fizz") + func(idx, 5, "Buzz") || idx ); document.body.append(arr.join(", ")); fill toma un solo objeto, ¡no se ejecuta 100 veces!
Dado que las funciones de JavaScript son objetos, este código declara una función una vez
Tenga en cuenta el ++idx porque queremos comenzar en 1, no en 0
En JavaScript, ""+"" es un valor Falsy, por lo que devuelve el valor idx para números que no son de FizzBuzz
Más métodos de matriz explicados: https://array-methods.github.io