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

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

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