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

160
Visualizações
¿Cómo unir una matriz de n dimensiones con diferentes separadores para cada nivel?

Entrada de muestra

Formación

Aquí muestro una matriz de 3 dimensiones, pero el número real de dimensiones varía y se conoce como n .

 [ [ [1,2], [3,4] ], [ [5,6], [7,8] ] ]

Separadores

Tiene la misma longitud ( n ) que el número de dimensiones del arreglo donde el i-ésimo elemento representa el separador del i-ésimo nivel del arreglo.

 [',', '_', '-']

Salida deseada

 1-2_3-4,5-6_7-8

lo que he probado

Funciona para una matriz de 3 dimensiones pero no para una de 4 dimensiones.

Sé lo que está mal con mi código, pero no tengo idea de cómo solucionarlo.

Además, creo que hay métodos más simples y/o más eficientes.

3 dimensiones (en funcionamiento)

 const array = [[[1,2],[3,4]],[[5,6],[7,8]]]; const separators = [',', '_', '-']; const _separators = separators.reverse(); let i; function join(array, first = false) { const next = Array.isArray(array[0]); let result; if (next) { result = array.map(e => { if (first) { i = 0; } return join(e); }); i++; result = result.join(_separators[i]); } else { result = array.join(_separators[i]); } return result; } const result = join(array, true); console.log(result);

4 dimensiones (no funciona correctamente)

 const array = [[[[1,2],[3,4]],[[5,6],[7,8]]],[[['A','B'],['C','D']],[['E','F'],['G','H']]]]; const separators = ['|', ',', '_', '-']; const _separators = separators.reverse(); let i; function join(array, first = false) { const next = Array.isArray(array[0]); let result; if (next) { result = array.map(e => { if (first) { i = 0; } return join(e); }); i++; result = result.join(_separators[i]); } else { result = array.join(_separators[i]); } return result; } const result = join(array, true); console.log(result); // desired output: 1-2_3-4,5-6_7-8|A-B_C-D,E-F_G-H

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

0

Algo así con recursividad

 const join = (array, separators, depth) => { if (depth < separators.length -1) { return array.map(el => join(el, separators, depth + 1)).join(separators[depth]); } else { return array.join(separators[depth]); } }; { const array = [[[1,2],[3,4]],[[5,6],[7,8]]]; const separators = [',', '_', '-']; console.log(join(array, separators, 0)); } { const array = [[[[1,2],[3,4]],[[5,6],[7,8]]],[[['A','B'],['C','D']],[['E','F'],['G','H']]]]; const separators = ['|', ',', '_', '-']; console.log(join(array, separators, 0)); }

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