본문 바로가기

개발일지/Javascript

[Javascript] array sort 다중 조건

성적값으로 내림차순, 같은 성적이라면 이름값을 사전순(오름차순)으로 나열하고 싶다.

 

기존 코드

array.sort((a, b) => {
  if (b.score - a.score < 0) return -1;
  else if (b.score - a.score > 0) return 1;
  else if (b.name < a.name) return 1;
  else return -1;
});

 

 

 

개선코드

array.sort((a, b) => b.score - a.score - (a.name < b.name));

 

 

 

승률(desc), 이긴횟수(desc), 체중(desc), 번호(asc) 기준으로 정렬할 때

위의 방법으로 하면 단위가 모두 달라 적용하기 힘들다.

 

 

 

기존 코드

const result = array.sort((a, b) => {
    if (winrate[b] > winrate[a]) return 1;
    else if (winrate[b] < winrate[a]) return -1;
    else if (overweight[b] > overweight[a]) return 1;
    else if (overweight[b] < overweight[a]) return -1;
    else if (weights[b] > weights[a]) return 1;
    else if (weights[b] < weights[a]) return -1;
    else if (b < a) return 1;
    else -1;
});

 

 

 

개선코드

const result = array.sort(
    (a, b) =>
      winrate[b] - winrate[a] ||
      overweight[b] - overweight[a] ||
      weights[b] - weights[a] ||
      a - b
);

 

 

결론 sort() 함수 내에 || 를 사용하자!

'개발일지 > Javascript' 카테고리의 다른 글

조건 실수  (0) 2022.01.04
[Javascript] String to array  (0) 2021.09.24
[JWT] 클라이언트에서의 관리  (0) 2021.08.27
[JavaScript] 문자열  (0) 2021.07.27
Java와 JavaScript의 차이점  (0) 2021.05.16