Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

89
Vistas
una mejor manera si se itera un objeto usando lodash

Usando lodash, me pregunto si hay una mejor manera de hacer esto.

Tengo un objeto de matriz como el siguiente.

 { "ALFA ROMEO": { "MITO": [{ "carData": "stuff" }] }, "AUDI": { "A1": [{ "carData": "stuff" }, { "carData": "stuff" } ], "Q3": [{ "carData": "stuff" }], "A3": [{ "carData": "stuff" }, { "carData": "stuff" }, { "carData": "stuff" } ] } }

Estoy usando _.forEach para iterar a través del objeto para estructurar la salida similar a esta:

 ALFA ROMEO - 1 MITO (1) AUDI - 5 A1 (2) Q3 (1) A3 (2)

Usando esto puedo llegar a una parte del camino:

 _.forEach(jData, (val, key) => { console.log(key) _.forEach(val, (val, key) => { console.log(' ' + key + ' (' + val.length + ')') }) })

Que me dan esto:

 ALFA ROMEO MITO (1) AUDI A1 (2) Q3 (1) A3 (2)

Mi pregunta es esta:

a) ¿Hay una mejor manera de hacer esto sin un doble bucle?

b) ¿La única forma de obtener un total para cada marca es sumando los recuentos del modelo, o hay una mejor manera de hacerlo?

Gracias.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

No hay forma de hacerlo sin bucles anidados, ya que necesita imprimir cada modelo.

Puede usar _.sumBy() para obtener las longitudes totales de los modelos, de modo que pueda mostrar eso antes del bucle.

 const jData = { "ALFA ROMEO": { "MITO": [{ "carData": "stuff" }] }, "AUDI": { "A1": [{ "carData": "stuff" }, { "carData": "stuff" } ], "Q3": [{ "carData": "stuff" }], "A3": [{ "carData": "stuff" }, { "carData": "stuff" }, { "carData": "stuff" } ] } }; _.forEach(jData, (val, key) => { let total = _.sumBy(_.toArray(val), 'length'); console.log(`${key} - ${total}`) _.forEach(val, (val, key) => { console.log(`${key} (${val.length})`) }) })
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda