Javascript点计算系统

时间:2010-05-11 13:43:01

标签: javascript math

我试图用javascript创建一个积分计算系统,但问题在于数学部分。我已经在服务器上保存了分数,并根据该数字我想决定级别。抱歉我的英语不好,我不能很好地解释:D。我想要的是:level 1 need 0 points level 2 needs 100 points level 3 needs 240 points level 4 needs 420 points level 5 needs 640 points 等等.... 我需要一个数学函数来计算每个级别。如果我知道计算所需点数的水平,以及我只知道计算水平的点数的话。

4 个答案:

答案 0 :(得分:2)

var levels = {
1: 0,
2: 100,
3: 240,
4: 420,
5: 640}
function get_level(points){
    for (level in levels){
       if (points < levels[level]){
          return level - 1;
       }
    }
}

这只需要水平哈希并遍历各个级别,直到这些点高于级别的最小值,返回最后一级。

答案 1 :(得分:2)

要生成您提供的系列,请使用:

function getPoints(level)
{
  return 20*(level-1)*(level+3);
}

要从点获得等级有点棘手,您需要使用二次公式反转上述公式,然后采取正解:

function getLevel(points)
{
  var level = -1 + Math.sqrt(4 + points/20);

  // Round down to nearest level
  return Math.floor(level);
}

此外,将来尝试让您的问题更加清晰。你可以看到三个人(至少)误解了你的问题 - 你不清楚你的等级是一个数学系列。

答案 2 :(得分:1)

嗯,我对你的目标有一个模糊的想法

var levels = [0, 100, 240, 420, 640];

function GetLevel(points)
{
    for(i == levels.length - 1; i >= 0; i--)
    {
        if (points >= levels[i]) return i + 1;        
    }        
}

指向下一个级别

function PointsToNextLevel(currentPoints)
{
    var level = GetLevel(currentPoints);
    if (level == levels.length) return 0;
    return levels[level - 1] - currentPoints;
}

答案 3 :(得分:1)

这个功能可以解决你的问题,对我来说,似乎很容易理解:

function getLevel(points) 
{
    var levels = [0,100, 240, 420, 640];
    var maxLevel = levels.length;
    var i;
    for (i=0;i<maxLevel;i++) {
      if (levels[i]>points) return i;
    }
    return maxLevel;
}