【发布时间】:2016-12-11 18:36:50
【问题描述】:
我有 5 颗星,每次用户可以选择从 1 到 5 进行评分。所以我有这样的分数数组
stars = [0,0,2,3,5] // 我在数据库中有这个
2个用户给了3星,3个用户给了4星,5个用户给了5星,但是我如何计算分数以显示在客户端?
【问题讨论】:
-
聚合你的星星数组并计算平均值。
标签: javascript jquery angularjs algorithm
我有 5 颗星,每次用户可以选择从 1 到 5 进行评分。所以我有这样的分数数组
stars = [0,0,2,3,5] // 我在数据库中有这个
2个用户给了3星,3个用户给了4星,5个用户给了5星,但是我如何计算分数以显示在客户端?
【问题讨论】:
标签: javascript jquery angularjs algorithm
您可以将加权值相加并除以评分数。
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);
【讨论】:
r,a,i?),没有解释其中哪些充当“权重”,哪些是要平均的元素(我对需要更正的答案并不感到惊讶)。 OP 是否会自己与加权平均值建立联系,他不会问...但是她/他会收到一条像魔术一样工作的高级烹饪鱼,而不是钓鱼课。
另一个同样有效但可能更容易理解的解决方案。
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);
【讨论】:
这是适合您的完整解决方案..如果不起作用,请发表评论..
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/了解详情
【讨论】: