Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

219
Vistas
¿Por qué el empalme no elimina elementos de mi matriz?

Estoy creando un juego de ruleta que muestra elementos aleatorios de diferentes matrices cuando la rueda cae en una categoría específica. Hasta ahora todo funciona excepto cuando la rueda aterriza en una categoría, selecciona el mismo elemento aleatorio de la matriz correcta una y otra vez. Estoy tratando de usar math.random y el método de empalme para seleccionar aleatoriamente un elemento de una matriz y eliminar ese elemento para que solo se puedan mostrar elementos nuevos y aleatorios de la matriz, pero no ha funcionado.

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

No sé cómo es el resto del código, pero si siempre obtienes el mismo valor una y otra vez, es posible que no estés volviendo a ejecutar el código que obtiene los valores.

Intente envolver la lógica para recuperar las zonas de símbolos en una función:

 function getSymbolZones() { const symbolZones = []; symbolZones[1] = a[Math.floor(Math.random()*a.length)]; symbolZones[2] = b[Math.floor(Math.random()*b.length)]; symbolZones[3] = c[Math.floor(Math.random()*c.length)]; symbolZones[4] = d[Math.floor(Math.random()*d.length)]; symbolZones[5] = e[Math.floor(Math.random()*e.length)]; symbolZones[6] = f[Math.floor(Math.random()*f.length)]; symbolZones[7] = g[Math.floor(Math.random()*g.length)]; symbolZones[8] = h[Math.floor(Math.random()*h.length)]; return symbolZones; }

y luego utilícelo en la función handleWin .

 const handleWin = (actualDeg) => { const symbolZones = getSymbolZones(); const winningSymbolNr = Math.ceil(actualDeg / zoneSize); display.innerHTML = symbolZones[winningSymbolNr]; }

PD Entiendo que comienzas la matriz en el índice 1 porque esa es la zona más pequeña que puedes obtener de la operación 45/45. Pero si yo fuera tú, comenzaría el índice desde 0 y simplemente restaría 1 al acceder a la matriz: symbolZones[winningSymbolNr - 1] . De esta manera, no obtiene errores extraños cuando intenta recorrer una matriz que tiene un primer índice vacío.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Además de usar array , le sugiero que use object y un bucle for para que el código sea más fácil de ejecutar. Este código debería funcionar:

 let deg = 0; // The 360 degree wheel has 8 zones, so each zone is 45 degrees let zoneSize = 45; let symbol = { a: ["a", "b", "c", "d", "e"], b: ["f", "g", "h", "i", "j"], c: ["a", "b", "c", "d", "e"], d: ["f", "g", "h", "i", "j"], e: ["a", "b", "c", "d", "e"], f: ["f", "g", "h", "i", "j"], g: ["a", "b", "c", "d", "e"], h: ["f", "g", "h", "i", "j"], } // zones for each 8 categories let ran = Math.floor(Math.random() * Object.keys(symbol).length) console.log(Object.values(symbol)[ran]) //Random select a zone from above 8 let selectedzone = Object.values(symbol)[ran] //Random select an item from selected zone let index = Math.floor(Math.random() * selectedzone.length) let symbolZones = selectedzone[index] console.log(symbolZones) const handleWin = (actualDeg) => { const winningSymbolNr = Math.ceil(actualDeg / zoneSize); display.innerHTML = symbolZones[winningSymbolNr]; }

about 4 years ago · Juan Pablo Isaza Denunciar

0

Reorganicé las matrices de entrada en una matriz de matrices (5 matrices de 9 elementos = 45). Supongo que quieres que todo se mezcle.

 const log = data => console.log(JSON.stringify(data)); let zones = [ ["🎁", "🎆", "🎯", "🌈", "🌛", "💩", "💰", "🍒", "🌴"], ["🌞", "🍀", "💀", "💘", "💣", "🎲", "🎰", "🎈", "🗿"], ["🎁", "🎆", "🎯", "🌈", "🌛", "💩", "💰", "🍒", "🌴"], ["🌞", "🍀", "💀", "💘", "💣", "🎲", "🎰", "🎈", "🗿"], ["🎁", "🎆", "🎯", "🌈", "🌛", "💩", "💰", "🍒", "🌴"] ]; let zoneSize = zones.length * zones[0].length; let symbolZones = []; for (let i = zoneSize; i > 0; i--) { let deg = zones.flatMap(z => z.splice(Math.floor(Math.random() * z.length), 1)); if(deg.length > 0) { symbolZones.push(deg); } } log(`Original Array zones`); log(zones); log(`New Array symbolZones`); log(symbolZones);
 .as-console-row-code { display: block; width: 100%; overflow-wrap: anywhere; } .as-console-row::after { content: ''!important }

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda