2014-12-22 4 views
0

입력 행에서 새로운 문자열 행 배열을 만들어야합니다. 입력 배열에는 국가 이름과 스코어가 포함됩니다. 내 목표는 국가가 나타날 계급 인 하나의 값을 더 추가하여이 배열을 다시 만드는 것입니다. 아래의 나의 해골 코드를 확인하십시오.점수에 의한 문자열 행 배열의 순위 지정

위의 예를 들어
<!DOCTYPE html> 
<html><head><meta charset="UTF-8"></head> 
<body> 
<button type="button" onclick="myRankFunction(['AFG\t3,416', 'AUS\t1,414', 'BRA\t2,073', 'JPN\t1,316'])">Rank</button> 
<script> 
/* 
* The function must return a new rowlist in the format: 
* Rank[TAB]Country[TAB]Score 
* - notice that the input rowlist DOESN'T contain the "Rank" part in the begining of the row; 
* - Rank is an integer number which represents the country's position in the ranking; 
* - Score is a float number; more Score means better Rank. 
*/ 
function myRankFunction(rowlist) 
{ 
    var newrowlist = []; 
    var s1 = [], s2 = []; 
    for(i = 0; i < rowlist.length; i++) 
    { 
     s1 = rowlist[i].split("\t"); 
     for(j = 0; j < rowlist.length; j++) 
     { 
      // ignores the current row 
      if(i == j) 
      { 
       continue; 
      } 
      s2 = rowlist[j].split("\t"); 
      if(s1[1] > s2[1]) 
      { 

      } 
      else if(s1[1] < s2[1]) 
      { 
      } 
      else 
      { 
      }   
     } 
    } 
    return newrowlist; 
} 
</script> 

, 함수는 반환해야합니다 :

['1[TAB]AFG[TAB]3,416', 
'2[TAB]BRA[TAB]2,073', 
'3[TAB]AUS[TAB]1,414', 
'4[TAB]JPN[TAB]1,316'] 
+0

왜 그냥 배열을 정렬 할 수 있습니까? 그런 다음 순위는 새로운 배열 인덱스 + 1입니다. – Barmar

+1

우선, "지루함"은 도움을 청하고 일을 그만두는 것이 가난한 변명입니다. 둘째, 배열을 정렬하고 자체 인덱스를 순위로 사용합니다. 어딘가에서 순위를 표시하려면'index + 1'을 사용하십시오 [여기] (http://www.sorting-algorithms.com/)는 직접 작성하려는 경우 정렬에 대한 추가 읽기입니다. –

+0

Barmar and PremierBromanov : 나는 점수를 정렬하려고했지만, 그것을 한 후에 정렬 된 점수를 기반으로 각 문자열 행을 재정렬하는 방법을 알지 못합니다. 일부 국가에서 동일한 점수를받을 수 있다고 말한 것을 잊었습니다. 이것은 또한 나에게 많은 것을 복잡하게했다. –

답변

0
['AFG\t3,416', 'AUS\t1,414', 'BRA\t2,073', 'JPN\t1,316'].sort(function(a,b){ 
    //retrieving the rank by splitting the entry and return true or false to the sort callback function 
    //in order to sort by rank 1,2,3 ... 
    return(a.split('\t')[1]<b.split('\t')[1]) 
}).map(function(e,i){ 
    //creating a new array from the sorted array 
    //adding the rank (using the index) - have to add 1, since index starts at 0 
    return (i+1)+"\t"+e; 
}) 
+0

솔루션에 설명을 추가 할 수 있다면 좋을 것입니다. 그런 식으로, 화제가 아닌 다른 사람들은 대답을 더 쉽게 이해할 수 있습니다. – pgampe

+0

topheman, 코드 주셔서 감사합니다. 그러나 테스트 한 결과 BRA 대신 AUS가 2 위를 차지했습니다. –

+0

내가 얻을 :'[ "1 \t AFG \t 3416", "2 \t BRA \t 2073", "3 \t AUS \t 1414", "4 \t JPN \t 1316은"]' – topheman