假设您有一系列子挑战,如下所示:
subchallenges = [
{name: 'score',
result: 'gold'},
{name: 'time',
result: 'bronze'},
...and so on.... ]
Run Code Online (Sandbox Code Playgroud)
您需要找到最终得分,这与任何子挑战中的最低结果相等.排名层次结构
['gold', 'silver', 'bronze', 'none']
Run Code Online (Sandbox Code Playgroud)
所以在上面的示例数组中,如果它只包含那些子挑战对象,那么最终得分将等于青铜.您认为最好的方法是什么?
你应该为你的字符串评级添加一些整数值:
var ratings = {
'gold' : 3,
'silver' : 2,
'bronze' : 1,
'none' : 0
}
Run Code Online (Sandbox Code Playgroud)
然后循环应对挑战很容易:
function getRating(subchallenges)
{
var result = 'gold';
var lowestRate = 3;
var numRates = 0;
for(var i=0;i<subchallenges.length;i++)
{
var rate = ratings[subchallenges[i].result];
if(rate > 0 && rate < lowestRate)
{
lowestRate = rate;
result = subchallenges[i].result;
numRates++;
}
}
if(numRates == 0) return 'none';
return result;
}
Run Code Online (Sandbox Code Playgroud)
编辑:修复它以便当所有挑战都是'无'时它将返回'无'而不是'黄金'