Boa tarde, como consigo gerar uma porcentagem desse array:
valor = [
{ text: ‘Teste1’, value: 1 },
{ text: ‘Teste2’, value: 1 },
{ text: ‘Teste3’, value: 5 },
{ text: ‘Teste4’, value: 1 },
{ text: ‘Teste5’, value: 1 },
{ text: ‘Teste6’, value: 1 }
]
Eu fiz assim dentro do map Math.round((item.value / valor.length) * 100)
Mas ele me retorna isso:
Teste1 17%
Teste2 17%
Teste3 83%
Teste4 17%
Teste5 17%
Teste6 17%
Alguém consegue me ajudar?
valor.length
é o tamanho do array valor
, que no caso é 7
.
Mas para calcular a porcentagem, você tem que levar em consideração a soma dos valores (e não a quantidade deles). Então primeiro tem que calcular essa soma:
let total = 0;
for (const item of valor) {
total += item.value;
}
E você usa esse total no cálculo da porcentagem:
for (const item of valor) {
// usa o total em vez de valor.length
const perc = Math.round((item.value / total) * 100);
console.log(`${item.text} ${perc}%`);
}
Saída:
Teste1 10%
Teste2 10%
Teste3 50%
Teste4 10%
Teste5 10%
Teste6 10%
1 curtida
Ia começar a fazer com Reduce, mas esse modo deu certo, obrigada 
!