Me encontré un problema. Quiero imprimir una matriz del número 0 al 100. Si el número es divisible por 3, quiero imprimir flip. si el número es divisible por 5, quiero imprimir flop. por ejemplo, la matriz debería ser [0,1,2,'flip',4,'flop','flip,........,'flop']. ¿Cómo hacer esto en JS? Hasta ahora he hecho esto pero no imprime toda la matriz.
function wow() { var arr = [] for (let i = 0; i <= 100; i++) { if(i!=0){ if(i%3===0){ i='flip' arr.push(i) } if(i%5===0){ i='flop' arr.push(i) } } arr.push(i) } console.log(arr) } wow()Estás cambiando la variable i dentro del bucle for, lo que no deberías estar haciendo. Intente usar una variable temporal para determinar qué se envía a su matriz.
Además, si un número es divisible por 3 Y 5, entonces el último (flop) tiene prioridad, ¿es eso lo que esperas que suceda?
function wow() { var arr = [] for (let i = 0; i <= 100; i++) { let temp = i; if (i != 0) { if (i % 3 === 0) { temp = 'flip' } if (i % 5 === 0) { temp = 'flop' } } arr.push(temp) } console.log(arr); }Aquí hay una versión un poco más corta...
let arr = Array.from({ length: 101 }, (e, i) => i) arr.forEach((n, i) => { Number.isInteger(n / 3) ? arr[i] = 'flip' : null, Number.isInteger(n / 5) ? arr[i] = 'flop' : null }) console.log(arr) const dot = (a,b) => x => a(b(x)); const id = x => x; function flipflop(n){ const f = (N, m) => n % N ? id : x => _ => m + x(''); return dot(f(3, 'flip'), f(5, 'flop')) (id) (n); } let arr = Array(101).fill(0).map((_,i)=>flipflop(i)); console.log(arr);