angularjs 计算评分到数字

az31mfrm  于 2023-11-16  发布在  Angular
关注(0)|答案(4)|浏览(119)

我有5星,每次用户可以选择从1-5率。所以我有这样的分数数组
stars = [0,0,2,3,5]//我在数据库中有这个
2个用户给了3颗星,3个用户给了4颗星,5个用户给了5颗星,但是我如何计算分数以显示在客户端?

j8yoct9x

j8yoct9x1#

您可以对加权值求和,然后除以评分计数。

var stars = [0, 0, 2, 3, 5],
    count = 0,
    sum = stars.reduce(function (sum, item, index) {
        count += item;
        return sum + item * (index + 1);
    }, 0);
   
console.log(sum / count);

字符串

laximzn5

laximzn52#

另一个解决方案,工作一样好,但可能更容易理解。

var stars = [0, 0, 2, 3, 5],
    count = 0,
    sum = 0;

stars.forEach(function(value, index){
  count += value;
  sum += value * (index + 1);
});

console.log(sum / count);

字符串

kmbjn2e3

kmbjn2e33#

这是为您提供的完整解决方案。如果不起作用,请发表评论。
HTML

<p id="demo"></p>

字符串
JavaScript

<script type="text/javascript">
stars = [0,0,2,3,5]

var sum = stars.reduce(add, 0);
function add(a, b) {
    return a + b;
}
var text='';

 for (i = 0; i < stars.length; i++) { 
  text += "The percentege of the star "+(i+1)+ " is :"+ (stars[i]/sum)*100 + "<br>";
}
document.getElementById("demo").innerHTML = text;
</script>


点击这里... https://jsfiddle.net/zoux6v1x/1/了解详情

7tofc5zh

7tofc5zh4#

var stars = [0, 0, 2, 3, 5];

var sum = stars.reduce(function (sum, item, index) {
    return sum + item * (index + 1);
}, 0);

var count = stars.reduce(function (count, item) {
    return count + item;
}, 0);

console.log(sum / count);

字符串

相关问题