Javascript - 计算缺失的 5 颗星以达到所需的评级

标签 javascript rating-system

我想制作一个脚本来计算我需要多少个“5”才能达到 4.95 评分。

我创建了一个对象:

var obMed = {
   5: 0,
   4: 0,
   3: 0,
   2: 0,
   1: 0
 };

我得到了这个函数来用我的评分更新以前的对象

function upOB(a,b,c,d,e) {
    obMed["5"] = a;
    obMed["4"] = b;
    obMed["3"] = c;
    obMed["2"] = d;
    obMed["1"] = e;
    return obMed;
}

这个函数用来获取评分值

function med(obj) {
    div = obj["5"] + obj["4"] + obj["3"] + obj["2"] + obj["1"];
    somma = (obj["5"] * 5) + (obj["4"] * 4) + (obj["3"] * 3) + (obj["2"] * 2) + (obj["1"] * 1);
    media = (somma/div).toFixed(2);
    return media;
} 

此时,我想向 object["5"] 添加 1,直到我的平均值大于或等于 4.95,但我真的陷入困境。

我尝试了循环但没有结果,可能是我写得不好。

最佳答案

如果您计算方程式,您将得到以下关系(使用与代码相同的变量名称)

function getNeed(div, somma) {
  return Math.ceil((4.95*div - somma) / 0.05);
}

据我了解,div是发送的选票总数,somma是所有分数的总和。


方法背后的数学

当前分数:somma/div
如果您添加 N 票 5 星,新分数将为:(somma + N * 5)/(div + N)
如果您希望其等于 4.95,则执行 (somma + N * 5)/(div + N) = 4.95,结果为:
N = (4.95*div - 索玛)/0.05

然后,您必须像 @dvsoukup 评论的那样取消该值,因为您不能拥有非整数数量的选票。例如,如果计算出的 N 值为 6.72,则结果将为 7。

关于Javascript - 计算缺失的 5 颗星以达到所需的评级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40029610/

相关文章:

javascript - CSS 不适用于 Javascript 创建的元素

jquery - 如何获得半星/部分星级

html - 任何人都可以为我改变这个吗?评级系统 css 从 "high to low"到 "low to high"

javascript - 添加带有 innerHTML 属性的按钮

javascript - 使用ajax和json将数组从php发送到js

mysql - 在 CakePHP 中计算新的平均 afterSave(或更好的东西?)

html - 在哪里/如何为这个星级评级教程保存星图?

image - 星级和微格式

javascript - 如何创建一个将单行颜色从黑色变为灰色再变为白色的函数?

javascript - lodash 的filterfirst 和filterlast 函数