Посчитать рейтинг для каждого значения
есть рейтинг товара от 0 до 5
как мне получить процентное отношение для каждого числа?
"avgRating": "4.8",
"countReviews": 4,
"percent": 96,
"ratings": [
{
"rating": 5,
"count": 3,
},
{
"rating": 4,
"count": 1,
},
{
"rating": 3,
"count": 0,
},
{
"rating": 2,
"count": 0,
},
{
"rating": 1,
"count": 0,
}
]
чтобы можно было отобразить сколько % занимает рейтинг с 5, рейтинг с 4 и т/д
Ответы (2 шт):
Автор решения: eccs0103
→ Ссылка
Для начала
Почему-то у вас объект в стиле JSON. Объект на JS можно и без кавычек создать:
{
avgRating: 4.8,
countReviews: 4,
percent: 96,
ratings: [
{
rating: 5,
count: 3,
},
{
rating: 4,
count: 1,
},
{
rating: 3,
count: 0,
},
{
rating: 2,
count: 0,
},
{
rating: 1,
count: 0,
}
],
}
Решение
Сначала считаем общее количество, потом считаем проценты:
const ratings = [
{
rating: 5,
count: 3,
},
{
rating: 4,
count: 1,
},
{
rating: 3,
count: 0,
},
{
rating: 2,
count: 0,
},
{
rating: 1,
count: 0,
}
];
const summary = ratings.reduce((previous, current) => previous += current.count, 0);
const results = ratings.map((element) => ({
rating: element.rating,
percent: element.count / summary,
}));
results.forEach((result) => {
console.log(`${result.rating} → ${result.percent * 100}%`);
});
Автор решения: Алексей Р
→ Ссылка
marks = {
"avgRating": "4.8",
"countReviews": 4,
"percent": 96,
"ratings": [{
"rating": 5,
"count": 3,
},
{
"rating": 4,
"count": 1,
},
{
"rating": 3,
"count": 0,
},
{
"rating": 2,
"count": 0,
},
{
"rating": 1,
"count": 0,
}
]
}
out = marks["ratings"].reduce((a, el) => a.concat({mark: el['rating'],rating: (el['count'] / marks['countReviews'] * 100).toFixed(1) + '%'}), []);
console.log(out);