[TIL] Javascript List Array(배열) 특정값 정렬 (feat. Typescript)

DEV_Eastwoo·2022년 10월 24일
0

javascript

목록 보기
1/1

개발 도중 배열을 특정 값 순서에 따라 정렬할 필요가 있었다.

검색해보니 갓 Stackoverflow!

만약 arr이라는 배열이 있다고 가정해보자.

arr = [1,1,2,3,5,6,0,7]

하지만 정렬 시 2가 앞으로 와야 할 경우가 있다.

CASE1

arr.sort((a,b)=> (a !== 2)-(b !== 2) || a-b);
 // ==>[2, 0, 1, 1, 3, 5, 6, 7]

자바스크립트 sort라는 함수에 콜백을 이용하여 이처럼 구현 할수 있다.

CASE2

또한 a-b를 b-a라고 바꿔주면 2를 제외한 내림차순으로 구현된다.

arr.sort((a,b)=> (a !== 2)-(b !== 2) || b-a);
  // ==>[2, 7, 6, 5, 3, 1, 1, 0]

CASE3

특정값을 뒤로 보내고 싶을 때는 !==가 아닌 ===으로 바꾸어주면 된다.

arr.sort((a,b)=> (a === 2)-(b === 2) || b-a);
  // ==>[7, 6, 5, 3, 1, 1, 0, 2]

CASE4

다중 값도 가능하다!

arr.sort((a,b)=> ((a === 2)-(b === 2))+((a === 7)-(b === 7)) || a-b);
  // ==>[0, 1, 1, 3, 5, 6, 2, 7]

참고:
https://stackoverflow.com/questions/29829205/sort-an-array-so-that-null-values-always-come-last#29829370

profile
backend 개발

0개의 댓글