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

231
Views
Desafío TestDome Pariente más cercano

Intenté resolver este desafío de testdome y me quedé atascado. El siguiente HTML representa un árbol genealógico:

 <James> <Dave></Dave> <Mike></Mike> <Sarah></Sarah> </James>

Implemente la función de pariente más cercano para que cuando se pase un elemento HTML principal, la función devuelva el pariente más cercano del padre cuyo nombre coincida con el nombre relativo y obedezca las siguientes reglas:

El parámetro padre es el elemento HTML del cual será descendiente el pariente más cercano. Cada miembro de la familia, incluidos los niños, también puede ser padre de uno o más niños. Los hijos están más estrechamente relacionados con los padres que los nietos. Si varios niños en la misma generación tienen el mismo nombre, entonces el primer niño en el árbol se considera el pariente más cercano. Si no se encuentra ningún pariente coincidente, la función debería devolver un valor nulo. Por ejemplo, el siguiente código debe imprimir 'MIKE' para el árbol genealógico dado:

 let parent = document.getElementsByTagName('James')[0]; let relative = closestRelative(parent, 'Mike'); console.log(relative && relative.tagName); // prints MIKE

Busqué en Google la respuesta y solo encuentro el método jquery para resolver este problema. No conozco Jquery, así que estoy tratando de resolverlo con js. Este es mi código:

 function closestRelative(parent, relativeName) { result = parent.find(relativeName); if (result.length === 1 ){ return result } else if (result.length > 1) { let lowest = 0 ; let lowestIdx = 0; result.forEach( function (idx, item) { if(idx === 0 ){ lowest = item.closest().index(parent); } else { if (item.closest().index(parent) < lowest) { lowestIdx = idx; lowest = item.closest().index(parent); } } }); return ([result[lowestidx]]); } else { return ([]); }
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

¡Encontré la respuesta correcta en este sitio! https://khw1031.github.io/posts/closest-relative-testdome/

 function closestRelative(parent, relativeName) { const queue = [...parent.children]; const tagName = relativeName.toUpperCase(); let el; while (queue.length > 0 ){ el = queue.shift(); if (el.tagName === tagName) return el; if(!el.hasChildNodes()) {continue ;} for (const childEl of el.children) { queue.push(childEl) } } return null }
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!