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

66
Visualizações
Obtenga el valor de la clave en un objeto profundamente anidado

Digamos que tengo un objeto de entrada como este:

 const obj = { deep: { someKey: 'someValue1!', veryDeep: { someOtherKey: 'someOtherValue' } }, deep2: { aa: 'bba' } }

Quiero escribir una función que tome este objeto como primer argumento y la cadena clave como segundo argumento. Luego recorrerá obj con recursividad y encontrará el valor y lo devolverá. Entonces, si nombro esta función getObjectValueOfKey , se llamará así: getObjectValueOfKey(obj, 'aa') y devolverá 'bba' .

Creo que estoy cerca con este código:

 const getObjectValueOfKey = (obj, key) => { const keys = Object.keys(obj) for (let currKey of keys) { if (typeof obj[currKey] === 'object') { getObjectValueOfKey(obj[currKey], key) } if (currKey === key) { return obj[key] } } } const res = getObjectValueOfKey(obj, 'aa') console.log('res', res)

pero por algunas razones desconocidas para mí, res no está undefined .

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

0

estuviste bastante cerca, la recursividad fue buena, pero el problema está relacionado con lo que no devuelven todas las rutas en tu código, en realidad, la única ruta que regresa es cuando encontraste la clave en el primer nivel del objeto, después de que hiciste la recursión y encontró el resultado pero no devolvió nada, el código llega al final de la función y javascript regresa por defecto indefinido si no se encuentra ningún retorno, para resolver el problema decide almacenar los resultados encontrados en la recursión en una variable y devolver ese valor al final de la función.

 const getObjectValueOfKey = (obj, key, found) => { const keys = Object.keys(obj); let result = undefined; result ||= found; for (let currKey of keys) { if (typeof obj[currKey] === "object") { result ||= getObjectValueOfKey(obj[currKey], key, result); } if (currKey === key) { return obj[key]; } } return result; }; const res = getObjectValueOfKey(obj, "aa", undefined); console.log("res", res);
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