Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

413
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda