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

97
Vistas
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 Respuestas
Responde la pregunta

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 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