我试图用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
等等....
我需要一个数学函数来计算每个级别。如果我知道计算所需点数的水平,以及我只知道计算水平的点数的话。
答案 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;
}