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

179
Visualizações
Nodo: combine la cantidad dinámica de matrices juntas: alterne los elementos en la matriz de resultados

Tengo un montón de matrices de diferentes longitudes que contienen objetos del mismo tipo. Lo que quiero es fusionar todas estas matrices en una matriz final. El problema que tengo es que los elementos deben alternarse en la matriz de resultados final.

entonces, si, por ejemplo, una matriz solo tiene un valor para alternar los resultados hasta que no haya ningún elemento en la matriz de longitud más corta y continuar con los demás que aún tienen valores.

 const arr1 = [arr1Obj, arr1Obj, arr1Obj] const arr2 = [arr2Obj, arr2Obj, arr2Obj] const arr3 = [arr3obj] //no pre-defined amount of arrays, could be only one array or 10+ //output desired [arr1Obj, arr2Obj, arr3Obj, arr1Obj, arr2Obj, arr1Obj, arr2Obj]

Mi enfoque fue simplemente usar un montón de bucles for anidados que estoy seguro de que no es la mejor manera de hacer esto. Me pregunto, ¿cómo se parecería la forma es6 más corta y de mayor rendimiento? Preferiblemente sin utilizar módulos como lodash.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Podemos usar Array.from() y Array.reduce() para obtener la secuencia que deseamos.

Comenzamos obteniendo la longitud máxima de la matriz usando Math.max() , luego usamos Array.from() para crear nuestra matriz de salida, usando Array.reduce() para agregar cada elemento a medida que iteramos sobre las matrices, aplanando al final :

 const arr1 = ['arr1Obj', 'arr1Obj', 'arr1Obj'] const arr2 = ['arr2Obj', 'arr2Obj', 'arr2Obj'] const arr3 = ['arr3Obj'] // Sort our input by length, we want the longest array first... const arrays = [arr1, arr2, arr3]; const maxLength = Math.max(...arrays.map(a => a.length)); const result = Array.from({ length: maxLength }, (v, idx) => arrays.reduce((acc, arr) => { if (idx < arr.length) { acc.push(arr[idx]); } return acc; }, [])).flat(); console.log(result);
 .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza Relatório

0

Puede usar .reduce to n arrays con los j -ésimos elementos y luego .push todos sus elementos:

 let arrs = [ [1,2,3], [2,undefined,'4',6,90,3.14], [1,0,-1,5], [], [100, 300, -Infinity] ]; let merged = []; for (var i = 0, j = 0; i < arrs.length; i++, j++) { merged.push(...arrs.reduce((a, c) => { if (c.length > j) a.push(c[j]); return a; }, [])); }
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