Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

164
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!