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

166
Visualizações
Reducción de mapas recursivos de Node.js/Javascript para eliminar elementos secundarios sin cambios

Tengo un mapa clave/valor de rutas que han cambiado que se parece a este ejemplo:

 { '/A' => '/AA', '/A/B' => '/AA/B', '/A/C' => '/AA/C', '/A/D' => '/AA/D' }

El valor de la izquierda es la ruta anterior, el valor de la derecha es la ruta nueva.

Necesito reducir esto a solo las rutas que han cambiado y filtrar los niños redundantes que no han cambiado. Por ejemplo, si cambio '/A' a '/AA' entonces no necesito los niños, a menos que hayan sido cambiados, etc.

El problema es que estos caminos pueden ser bastante profundos y necesito terminar recursivamente de alguna manera con lo que realmente ha cambiado.

3 días sin suerte, no puedo entenderlo, gracias a los poderosos guerreros del código por cualquier ayuda :)

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

0

Simplemente itérelos y elimine todo para lo que exista un movimiento de ancestro coincidente:

 const moves = new Map([ ['/A', '/AA'], ['/A/B', '/AA/B'], ['/A/C', '/AA/C'], ['/A/D', '/AA/X'], ]); for (const [from, to] of moves) { const fromParts = from.split('/'); for (let i=1; i<fromParts.length; i++) { const parentFrom = fromParts.slice(0, i).join('/'); const parentTo = moves.get(parentFrom); if (parentTo !== undefined) { const sub = '/' + fromParts.slice(i).join('/'); if (parentTo + sub === to) { console.log(`Move ${from}=>${to} contained in move ${parentFrom}=>${parentTo}`); moves.delete(from); } else { console.log(`Source ${from} is part of ${parentFrom}, but ${sub} was moved to ${to} instead of ${parentTo + sub}`); } } } } console.log(Object.fromEntries(moves));

Si no le gusta mutar el mapa de moves de entrada, también puede usar filter() en una serie de movimientos; solo necesita poder buscar posibles movimientos de los padres.

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