查找由字符串组成的层次结构中的最低分

acr*_*uui -3 javascript

假设您有一系列子挑战,如下所示:

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)

所以在上面的示例数组中,如果它只包含那些子挑战对象,那么最终得分将等于青铜.您认为最好的方法是什么?

x4r*_*f41 5

你应该为你的字符串评级添加一些整数值:

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)

编辑:修复它以便当所有挑战都是'无'时它将返回'无'而不是'黄金'