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

94
Views
Mezcla varias matrices de la misma manera pero con Lodash

tengo dos arreglos

 const mp3 = ['sing.mp3','song.mp3','tune.mp3','jam.mp3',etc]; const ogg = ['sing.ogg','song.ogg','tune.ogg','jam.ogg',etc];

Necesito barajar ambas matrices para que salgan de la misma manera, por ejemplo:

 const mp3 = ['tune.mp3','song.mp3','jam.mp3','sing.mp3',etc]; const ogg = ['tune.ogg','song.ogg','jam.ogg','sing.ogg',etc];

Hay algunas publicaciones en stackoverflow que mezclan matrices de la manera que describí, esta es bastante buena , pero ninguna de ellas demuestra cómo mezclar dos matrices usando Lodash .

La biblioteca de métodos de JavaScript se conoce como débil, tiene el método sort() pero no tiene el método shuffle() , por lo tanto, todas las respuestas mezclan la lógica de barajar una matriz & And & mantener la reproducción aleatoria idéntica entre múltiples arreglos Por lo tanto, pensé que crear una pregunta separada aquí sería una gran idea.

y para la parte de barajar del algoritmo, elegí Lodash , ya que lo estoy usando, y es la biblioteca de utilidades de JavaScript más popular que existe.

gracias!

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Un enfoque simple es simplemente barajar la matriz de índices y luego usar eso para obtener ambas matrices en el orden correspondiente:

 const mp3 = ['sing.mp3','song.mp3','tune.mp3','jam.mp3']; const ogg = ['sing.ogg','song.ogg','tune.ogg','jam.ogg']; const indices = _.shuffle([0, 1, 2, 3]); const shuffledMp3 = indices.map(idx => mp3[idx]); const shuffledOgg = indices.map(idx => ogg[idx]); console.log(shuffledMp3, shuffledOgg);
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>

Sin embargo, no debería necesitar hacer esto. Su pregunta solo surge porque está almacenando los datos de una manera inútil. Dado que los elementos de las dos matrices están claramente vinculados entre sí, no debe almacenarlos como 2 matrices, sino como una sola matriz cuyos elementos son objetos que contienen ambos nombres de archivo como propiedades. Esto le permite obtener lo que desea con una sola reproducción aleatoria:

 const files = [{mp3: 'sing.mp3', ogg: 'sing.ogg'}, {mp3: 'song.mp3', ogg: 'song.ogg'}, {mp3: 'tune.mp3', ogg: 'tune.ogg'}, {mp3: 'jam.mp3', ogg: 'jam.ogg'}]; const shuffled = _.shuffle(files); console.log(shuffled.map(file => file.mp3)); console.log(shuffled.map(file => file.ogg));
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>

(También vale la pena señalar que si todos los nombres de archivo tienen una forma tan predecible como en su ejemplo, incluso esto es innecesario: puede almacenar los nombres de archivo "en bruto": ['sing', 'song', 'tune', 'jam'] y agregue la extensión de archivo que necesite en el momento en que la necesite. Pero quizás sus datos reales no sean tan consistentes).

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!