Посчитать рейтинг для каждого значения

есть рейтинг товара от 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);

→ Ссылка