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

175
Vistas
Matriz de objetos: cuente las ocurrencias de una propiedad única en JavaScript

Dada una matriz de objetos JSON de muestra, como esta....

 [ { "firstName": "Bob", "lastName": "Smith", "city": "Preston", "st": "Florida", "age": 15 }, { "firstName": "Tom", "lastName": "Jones", "city": "Springfield", "st": "Illinois", "age": 34 }, { "firstName": "Mary", "lastName": "Hart", "city": "Miami", "st": "Florida", "age": 22 }, { "firstName": "Jenny", "lastName": "Dixon", "city": "Palm City", "st": "Florida", "age": 26 } ]

¿Cuál es la mejor manera de obtener el número de ocurrencias en función de las agrupaciones de una propiedad en particular? Entonces, digamos que quiero producir un objeto JSON que tenga cada estado único ("st") y el número de ocurrencias...

 [ { "st": "Illinois", "count": 1 }, { "st": "Florida", "count": 3 } ]

Puedo hacerlo manualmente usando un for-let, recorriendo la matriz, rastreando los valores mientras recorro, etc. Pero estoy seguro de que hay una manera más eficiente usando ES6. ¿Puedes ayudarme? Gracias.

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

0

Puede usar Array#reduce para llevar la cuenta

 let counts = json.reduce((b, a) => { let index = b.findIndex(j => j.st === a.st); if (index > -1) b[index].count++; else b.push({st: a.st, count: 1}); return b; }, [])

#ACTUALIZAR: Como mencionó @epascarello, hay una manera más eficiente de hacer esto, eliminando el bucle findIndex y usando Object.values

 const results = Object.values(json.reduce((obj, item) => { obj[item.st] = obj[item.st] || { st: item.st, count: 0 }; obj[item.st].count++; return obj;}, {})) 

 let json = [{ "firstName": "Bob", "lastName": "Smith", "city": "Preston", "st": "Florida", "age": 15 }, { "firstName": "Tom", "lastName": "Jones", "city": "Springfield", "st": "Illinois", "age": 34 }, { "firstName": "Mary", "lastName": "Hart", "city": "Miami", "st": "Florida", "age": 22 }, { "firstName": "Jenny", "lastName": "Dixon", "city": "Palm City", "st": "Florida", "age": 26 } ] let counts = json.reduce((b, a) => { let index = b.findIndex(j => j.st === a.st); if (index > -1) b[index].count++; else b.push({st: a.st, count: 1}); return b; }, []) console.log(counts) const results = Object.values(json.reduce((obj, item) => { obj[item.st] = obj[item.st] || { st: item.st, count: 0 }; obj[item.st].count++; return obj;}, {})) console.log(results)

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