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

时间:2013-06-28 14:26:33

标签: javascript

假设您有一系列子挑战:

subchallenges = [
    {name: 'score',
     result: 'gold'},
    {name: 'time',
     result: 'bronze'},
    ...and so on.... ]

您需要找到最终得分,这等于任何子挑战中的最低得分。排名层次结构

['gold', 'silver', 'bronze', 'none'] 

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

2 个答案:

答案 0 :(得分:5)

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

var ratings = {
    'gold' : 3,
    'silver' : 2,
    'bronze' : 1,
    'none' : 0
}

然后循环应对挑战很容易:

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;
}

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

答案 1 :(得分:1)

只需遍历数组:

var lowest = "gold";
for (var i = 0; i < subchallenges.length; i++){
    ...
}

使用lowest跟踪当前的最低分数,如果它更低,则更新它。