성적값으로 내림차순, 같은 성적이라면 이름값을 사전순(오름차순)으로 나열하고 싶다.
기존 코드
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 |