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

211
Visualizações
Mejores prácticas con arreglos anidados en javascript

Actualmente estoy trabajando con matrices anidadas en una respuesta de API y hay información que necesito extraer.

En el siguiente ejemplo, quiero extraer los valores de la clave obj "PaymentTypeName", y mi código se ve así:

 data.forEach(({ ModelList }) => { ModelList.forEach(({ CountryList }) => { CountryList.forEach(({ PaymentTypeList }) => { PaymentTypeList.forEach(({ PaymentTypeName }) => { console.log(PaymentTypeName); }); }); }); });

Donde "datos" es mi respuesta API.

Quiero saber: ¿hay un enfoque de código mejor/más limpio que estas llamadas "forEach" anidadas? ¿Se considera una mala práctica?

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

0

Si puede simplificar la estructura de datos, ese será el mejor enfoque.

Si la estructura está fuera de su control, la forma en que la ha escrito está bien para una extracción 'única' de datos anidados. Sin embargo, si constantemente extrae datos anidados en diferentes rutas, escribir forEach() será laborioso y es posible que desee considerar una función auxiliar para hacerlo más fácil.

Escribí un ayudante que se ejecuta así:

 const paymentTypes = getValuesAtPath(data, ['ModelList', 'CountryList', 'PaymentTypeList', 'PaymentTypeName']);

La función en sí usa reduce() y es recursiva.

 const data =[ { "ModelList": [ { "CountryList": [ { "PaymentTypeList": [ { "PaymentTypeName": "paypal" }, { "PaymentTypeName": "check" } ] }, { "PaymentTypeList": [ { "PaymentTypeName": "credit card" } ] } ] }, { "CountryList": [ { "AnotherInterestingField": "look at me", "PaymentTypeList": [ { "PaymentTypeName": "cash" } ] } ] } ] } ]; const getValuesAtPath = (data, path) => data.reduce((acc, item) => { const key = path[0]; const value = item[key]; if (value === undefined) return acc; // if at end of nested tree if (path.length === 1){ return [...acc, value]; } return [...acc, ...getValuesAtPath(value, path.slice(1, path.length))]; }, []); const result = getValuesAtPath(data, ['ModelList', 'CountryList', 'PaymentTypeList', 'PaymentTypeName']); console.log(result);

Este ayudante ahora se puede reutilizar para extraer otras propiedades también:

 getValuesAtPath(data, ['ModelList', 'CountryList', 'AnotherInterestingField'])
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