2012-10-15 7 views
-1

내가 자바 스크립트에서 배열을 정렬하려면 다음 코드를 사용하고 두 가지 속성을 기준으로 배열을 정렬 할 방법 :나는 자바 스크립트

array.sort(function(a,b){ 
      var score_a = $.fuzzyMatch(a['name'], user).score, 
       score_b = $.fuzzyMatch(b['name'], user).score; 

      return score_a < score_b ? -1 : score_a === score_b ? 0 : 1; 
     }); 

정렬 배열의 각 행의 '이름'속성 복용을 그리고 내 fuzzymatch 함수를 통해 그것을 실행하고 가장 관련성이 높은 일치가 배열의 상단에 반환되도록 점수를 반환합니다.

그러나 나는 항상으로 분류 상단에 ['folcode'] == 4 포함 된 행을 넣어 내 코드를 수정하는 방법,이 경우 a['folcode'] 또는

b['folcode'] 그래서 sumarise하는 것입니다 종류의 다른 속성을 포함 할 최고의 ['name'] 일치, 당신은 주로 folcode을 기준으로 정렬 할 경우 또한 가장 이름이 일치으로 분류 ['folcode'] == 3 행, ... 등 ...

+0

누군가가 downvote를 설명해 주시겠습니까? 나는 의도적으로 잘못된 것을하고있는 것이 아니며, 설명은 미래에 그러한 것들을 방지하는 방법을 배우는 데 도움이 될 것입니다. 고맙습니다. – gordyr

답변

1

을 반환하고 namefolcode 내에서, 당신은 항복해야 할 것 0 비교을 현재 name에 대해 수행하고 있지만 이름 비교 의 값은 같음 조건에서만 반환하십시오.

function(a,b) { 

    var code_a = a.folcode; 
    var code_b = b.folcode; 

    var score_a = $.fuzzyMatch(a.name, user).score; 
    var score_b = $.fuzzyMatch(b.name, user).score; 

    if(code_a === code_b) 
     return score_a < score_b ? -1 : score_a === score_b ? 0 : 1; 

    return code_a < code_b ? -1 : 1; 

} 
+0

절대적으로 완벽한 감사합니다! 솔루션이 너무 단순하기 때문에 나도 조금 바보 같다. 관계없이, 큰 감사드립니다. :) 나는 가능한 한 빨리 대답 할 것입니다. – gordyr

관련 문제