2013-06-28 29 views
-3

的說你有subchallenges像這樣的數組:找到得分最低的層次作出串

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

而且你需要找到的最後得分,這就是等於最低結果在任何subchallenges。排名層級變爲

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

這樣的示例陣列中的上述情況,如果它僅僅由那些subchallenge對象的,最終得分將等於青銅。你認爲最好的辦法是做什麼?

+0

這是不適合的stackoverflow。 – akonsu

回答

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

只是循環陣列上:

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

使用lowest當前得分最低的跟蹤,如果它是較低的,然後對其進行更新。