본문 바로가기
Node.js

[Node.js] Array.prototype.sort()

by yonikim 2021. 11. 2.
728x90

Javascript 에서 제공하는 배열의 정렬 함수를 사용했을 때, 다음 값으로 도출되는 것은 무엇일까? 

let nums = [6214, -2290, 2833, -7908];
nums.sort();
console.log(nums);

 

정답! 당연히 [ -7908, -2290, 2833, 6214 ] 아닌가요?

 


 

그러나 틀렸다. 도출되는 값은 [ -2290, -7908, 2833, 6214 ] 이었다.

 

배열의 요소 값을 문자열로 변환하여 유니코드 값을 비교하기 때문이다. 따라서 함수를 따로 만들어줘야 내가 원하는 대로 오름차순과 내림차순의 결과값을 얻어낼 수 있다.

const nums = [6214, -2290, 2833, -7908];

// 오름차순
const compareDesc = (a, b) => {
  return nums.sort((a, b) => a - b);
};

// 내림차순
const compareAsc = (nums) => {
  return nums.sort((a, b) => b - a);
};

console.log(compareDesc(nums));
console.log(compareAsc(nums));

 

728x90