Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

230
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!