개발 도중 배열을 특정 값 순서에 따라 정렬할 필요가 있었다.
검색해보니 갓 Stackoverflow!
만약 arr이라는 배열이 있다고 가정해보자.
arr = [1,1,2,3,5,6,0,7]
하지만 정렬 시 2가 앞으로 와야 할 경우가 있다.
arr.sort((a,b)=> (a !== 2)-(b !== 2) || a-b);
// ==>[2, 0, 1, 1, 3, 5, 6, 7]
자바스크립트 sort라는 함수에 콜백을 이용하여 이처럼 구현 할수 있다.
또한 a-b를 b-a라고 바꿔주면 2를 제외한 내림차순으로 구현된다.
arr.sort((a,b)=> (a !== 2)-(b !== 2) || b-a);
// ==>[2, 7, 6, 5, 3, 1, 1, 0]
특정값을 뒤로 보내고 싶을 때는 !==가 아닌 ===으로 바꾸어주면 된다.
arr.sort((a,b)=> (a === 2)-(b === 2) || b-a);
// ==>[7, 6, 5, 3, 1, 1, 0, 2]
다중 값도 가능하다!
arr.sort((a,b)=> ((a === 2)-(b === 2))+((a === 7)-(b === 7)) || a-b);
// ==>[0, 1, 1, 3, 5, 6, 2, 7]