用于计算五星评级的算法

100

我需要计算类似亚马逊网站上5星评级的分数。我已经进行了足够的搜索,以找到最佳算法,但是我没有得到一个正确的答案。举个例子,如果这些是评分:

5 star - 252
4 star - 124
3 star - 40
2 star - 29
1 star - 33

共收到 478 条评论。

亚马逊计算出此产品的评分为“5 分制中的 4.1 分”。有人能告诉我这个数字是怎么算出来的吗?我只是简单地求平均数,但得不到这样的结果。


3
一个冗长的程序,用于显示平均星级计算。 - Sanju
13个回答

1
此外,我只是试图为所有人制作实用且完整的代码。
我的Json对象数组。
var yourRatingData =[{
        review_id:1,
        customer_id:5,
        customer_name:"Faysal",
        rating:5,
        review_content:"I like this product it's cool and best in quality"
    },
    {
        review_id:2,
        customer_id:6,
        customer_name:"Adams",
        rating:4,
        review_content:"It's quality product though price a bit high"
    },
    {
        review_id:3,
        customer_id:8,
        customer_name:"Jane",
        rating:3,
        review_content:"I like but should improve quality"
    },
    {
        review_id:4,
        customer_id:9,
        customer_name:"Julia",
        rating:1,
        review_content:"It's not good"
    }];

Rating Calculation

let _5star = yourRatingData.filter(r=>r.rating==5).length;
let _4star = yourRatingData.filter(r=>r.rating==4).length;
let _3star = yourRatingData.filter(r=>r.rating==3).length;
let _2star = yourRatingData.filter(r=>r.rating==2).length;
let _1star = yourRatingData.filter(r=>r.rating==1).length;

//Sum of individual star.
let sumOfRating = parseInt( _5star + _4star + _3star + _2star + _1star );

//Total number of rating
let overallRating = parseInt( 5*_5star + 4*_4star + 3*_3star + 2*_2star +1*_1star );

//Average of all rating
let averageRating = parseFloat(overallRating/sumOfRating);

//Percentage of each star rating
let _5starPercentage = parseInt((_5star/totalRating)*100);
let _4starPercentage = parseInt((_4star/totalRating)*100);
let _3starPercentage = parseInt((_3star/totalRating)*100);
let _2starPercentage = parseInt((_2star/totalRating)*100);
let _1starPercentage = parseInt((_1star/totalRating)*100);

我认为这很有帮助。


0

(总星数 / 评论人数 * 5 ) * 5

= 答案

在js中保留1位小数。

answer.toFixed(1);

例子,5个人的总评价是20颗星。
(20/5*5)*5 = 4.0

0

我使用这种方法来计算评分,它完美地运作着。

let one_star = 0;
let two_star = 0;
let three_star = 0;
let four_star = 0;
let five_star = 0;

Object.values(reviews).forEach(({ rating }) => {
  switch (rating) {
    case 1: one_star++; break;
    case 2: two_star++; break;
    case 3: three_star++; break;
    case 4: four_star++; break;
    case 5: five_star++; break;
  }
});

let sum = one_star + two_star + three_star + four_star + five_star;

let average = ((5 * five_star) + (4 * four_star) + (3 * three_star) + (2 * two_star) + (1 * one_star)) / (sum);

console.log(average);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接