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

404
Views
¿Cómo puedo usar esto para arreglar (2) en estos códigos?

Ya muestra el porcentaje correcto. Sin embargo, esto es lo que parece:

 8.333333333333332

¿Cómo puedo hacer que se muestre así: 8.33%

Ponerlo dentro de esto causará un error:

 acc[key] = (acc[key] || 0) + (1 / totalUsers) * 100.toFixed(2);

A continuación se muestran los códigos:

 const movies = data.filter(v => v.genre?.selected == "Movie"); const counts = movies.reduce((acc, cur) => { return !cur["1"]?.drama ? acc: Object.entries(cur["1"].drama).reduce((acc, [key,value]) => { if (value) { acc[key] = (acc[key] || 0) + (1 / totalUsers) * 100; } return acc; }, acc) }, {})

Esta es una parte de los datos:

 const totalUsers = 12 const data = [{ "1": { drama: { Comedy: true, Romance: true, BuddyComedy: false } }, "2": { drama2: { Tragedy: true}, others: "Dystopian", }, id: "zaMR9TR7hNV3p3VFNumyNbXMto93", genre: { selected: "Movie", }, displayName: "p1" }, { "1": { drama: { Tragedy: true, Comedy : true} }, "2": { drama2: { Romance: true} }, id: "zaMR9TR7hNV3p3VFNumyNbXMto93", //sample id genre: { selected: "Movie", }, displayName: "p2" }]
about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Tienes que envolver el 100 entre paréntesis.

Si no lo hace, el intérprete cree que el número es un decimal e intenta analizar el segmento después del punto (" toFixed(2) ") como un número, lo que provoca un error.


En tu caso...

Tendrás que analizar el número usando el Number de números y luego llamar toFixed() :

 Number(+(acc[key] || 0) + (1 / totalUsers) * (100)).toFixed(2);

Tome nota del operador unario más antes de " (acc[key] || 0) " que se usa para convertirlo en un número, para asegurarse de que no estamos concatenando cadenas. (si no lo agrega, terminará con NaN )

Código de trabajo:

 const totalUsers = 12 const data=[{1:{drama:{Comedy:!0,Romance:!0,BuddyComedy:!1}},2:{drama2:{Tragedy:!0},others:"Dystopian"},id:"zaMR9TR7hNV3p3VFNumyNbXMto93",genre:{selected:"Movie"},displayName:"p1"},{1:{drama:{Tragedy:!0,Comedy:!0}},2:{drama2:{Romance:!0}},id:"zaMR9TR7hNV3p3VFNumyNbXMto93",genre:{selected:"Movie"},displayName:"p2"}]; const movies = data.filter(v => v.genre?.selected == "Movie"); const counts = movies.reduce((acc, cur) => { return !cur["1"]?.drama ? acc : Object.entries(cur["1"].drama).reduce((acc, [key, value]) => { if (value) { acc[key] = Number(+(acc[key] || 0) + (1 / totalUsers) * (100)).toFixed(2); } return acc; }, acc) }, {}) console.log(JSON.stringify(counts,0, 2))

about 4 years ago · Juan Pablo Isaza Report

0

Pierde precisión si redondea repetidamente el número y lo analiza a lo largo del cálculo. Para preservar la precisión de sus números tanto como sea posible, el redondeo solo debe hacerse una vez después de completar todos los cálculos.

 const totalUsers = 12 const data=[{1:{drama:{Comedy:!0,Romance:!0,BuddyComedy:!1}},2:{drama2:{Tragedy:!0},others:"Dystopian"},id:"zaMR9TR7hNV3p3VFNumyNbXMto93",genre:{selected:"Movie"},displayName:"p1"},{1:{drama:{Tragedy:!0,Comedy:!0}},2:{drama2:{Romance:!0}},id:"zaMR9TR7hNV3p3VFNumyNbXMto93",genre:{selected:"Movie"},displayName:"p2"}]; const movies = data.filter(v => v.genre?.selected == "Movie"); const counts = movies.reduce((acc, cur) => { return !cur["1"]?.drama ? acc : Object.entries(cur["1"].drama).reduce((acc, [key, value]) => { if (value) { acc[key] = (acc[key] || 0) + (1 / totalUsers) * 100; } return acc; }, acc) }, {}) const rounded = Object.entries(counts).reduce((acc,[key,value])=>{ return {...acc,[key]:value.toFixed(2)}; },{}); console.log(rounded);

about 4 years ago · Juan Pablo Isaza Report

0

acc[key] = ((acc[key] || 0) + (1 / totalUsers) * 100).toFixed(2);

Envuelva todo entre corchetes y luego ponga .toFixed(2)

 const movies = data.filter(v => v.genre?.selected == "Movie"); const counts = movies.reduce((acc, cur) => { return !cur["1"]?.sideEffects1 ? acc: Object.entries(cur["1"].drama).reduce((acc, [key,value]) => { if (value) { acc[key] = ((acc[key] || 0) + (1 / totalUsers) * 100).toFixed(2); } return acc; }, acc) }, {})
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!