首页 > 解决方案 > 计算速率数平均值为 10

问题描述

我想写一个速率系统(类似于 imdb 电影速率),结果最大值为 10,平均输出可以是 0 到 10 之间的数字。应该像这样显示(2/10)

用户可以从 1 到 5(开始)进行评分,每个用户允许一次。

所以考虑一下,这个数组是所有用户的费率。

let rate = ['4', '5', '1', '2', '5', '5', '2', '1', '3', '3', '4']; // all users rates
let result = 0;

for (i = 0; rate.length > i; i++) {
  result += parseInt(rate[i]);
}

let av = result / 10;

它工作得很好,但问题是,这个输出永远不会达到很大的速率,比如 9 或 10。所以我应该制定一个目标,对吗?我的 ceil 目标是 1250,这意味着如果所有用户的总评分是 1250,用户应该获得率 10/10。

let av = 1250 / 10;

但这当然返回 125。

目标:像这样显示所有用户率,5/10 或 7/10 像 imdb 率。

标签: javascriptjquery

解决方案


您需要得到正确的平均值并乘以 2,因为 10(想要的)除以 5(您的五星级系统)并得到一个系统的平均值为 10。

let rate = ['4', '5', '1', '2', '5', '5', '2', '1', '3', '3', '4']; // all users rates
let result = 0;

for (i = 0; rate.length > i; i++) {
    result += parseInt(rate[i], 10);
}

let av = result / rate.length;

console.log('average', av);
console.log((av * 2).toFixed(2), 'of 10');


推荐阅读