Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

218
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda