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

113
Vistas
Cómo obtener un recuento múltiple de elementos en Object Array mediante el uso de mapas u otras funciones de iteración

Tengo una matriz de objetos que se parece a esto:

 const myArray = [ { bet_line: "1",bet_type: 1, f1: true, f2: true, f3: true, f4: false, f5:false } { bet_line: "1",bet_type: 2, f1: false, f2: true, f3: true, f4: true, f5:false } { bet_line: "1",bet_type: 4, f1: true, f2: false, f3: true, f4: true, f5:false } ... ... ];

y lo que quiero obtener es:

 const chartData = [ {name:'F1', value:2}, {name:'F2', value:2}, {name:'F3', value:3}, {name:'F4', value:2}, {name:'F5', value:0} ];

Ahora, sé cómo obtener cada elemento de una nueva matriz usando la función de matriz:

 const f1 = myArray.filter((x,i) => { return x.f1; }).length const f2 = myArray.filter((x,i) => { return x.f1; }).length ...

En realidad, hay más de 5 para el elemento F*, como F1~F20, por lo que calcular cada vez no es una forma adecuada. Quiero encontrar una forma más simple, ¿hay alguna forma de hacerlo usando la función Javascript Array ?

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

0

Puede usar una sola reduce para "sumar" los elementos. Debido a que son booleanos, es seguro (en javascript...) sumarlos usando + :

 const myArray = [ { bet_line: "1",bet_type: 1, f1: true, f2: true, f3: true, f4: false, f5:false }, { bet_line: "1",bet_type: 2, f1: false, f2: true, f3: true, f4: true, f5:false }, { bet_line: "1",bet_type: 4, f1: true, f2: false, f3: true, f4: true, f5:false } ]; const sumBet = (b1, b2) => ({ f1: b1.f1 + b2.f1, f2: b1.f2 + b2.f2, f3: b1.f3 + b2.f3, f4: b1.f4 + b2.f4, f5: b1.f5 + b2.f5 }); const emptyBet = () => ({ f1: false, f2: false, f3: false, f4: false, f5: false }); console.log( myArray.reduce(sumBet, emptyBet()) )

Si desea que sea más genérico, puede extraer la definición clave:

 const myArray = [ { bet_line: "1",bet_type: 1, f1: true, f2: true, f3: true, f4: false, f5:false }, { bet_line: "1",bet_type: 2, f1: false, f2: true, f3: true, f4: true, f5:false }, { bet_line: "1",bet_type: 4, f1: true, f2: false, f3: true, f4: true, f5:false } ]; const sumKeys = ks => (a, b) => Object.fromEntries(ks.map(k => [k, a[k] + b[k]])); const constKeys = (ks, c) => Object.fromEntries(ks.map(k => [k, c])); const keys = Array.from(Array(5), (_, i) => `f${i + 1}`); console.log( myArray.reduce(sumKeys(keys), constKeys(keys, 0)) )

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