기업 협업중 특정조건 순서대로 객체를 정렬해야하는 상황에 놓였다, 뭔가 숫자거나 문자열이면
sort()
를 활용해서 정렬을 할수있다고 생각이 드는데 객체? 문자열? 바로 떠오르지 않았다.
처음에는 구글링을 했는데 딱히 내가 원하는 설명이 나오진 않았고 (뭔가 처음으로?)MDN문서를 읽고 응용해서 문제를 해결한 기념으로 블로그에 남겨보고자 한다.
arr.sort([compareFunction])
는 그냥 막연하게 쓰던 것과 달리 compareFunction을 품고 있었다, compareFunction은 (a,b)를 넣어주면 비교해서 정렬시켜주는 녀석으로 바로 이 compareFunction을 활용해서 원하는 정렬을 조건을 주면 가능하겠다 싶었고 실제로 가능했다!
a와 b를 비교해서 a가 먼저이고 싶으면 -1을! b를 앞에놓고싶으면 1을, 그대로 둬야하는 상황에선 0을 리턴하면 되는 것!
var numbers = [4, 2, 5, 1,5, 3];
numbers.sort((a,b)=> {
if(a === 5 && b !== 5){
return -1
} if(a!== 5 && b === 5){
return 1
} if(a === b){
return 0
}
});
실험삼아 5로 정렬되는 조건을 걸어봤고 잘 작동하는 걸 볼수 있었다, 별건 아니었지만 나름 뿌듯 😁