Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

112
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!