[Javascript] sort 사용시 주의(?)사항

JungHoon Han·2022년 8월 3일
0

Javascript

목록 보기
1/5

sort() //정렬 함수

코딩테스트를 하다보니 자주사용하는 sort함수.
다른 블로그에 잘 작성된 글이 많기 때문에 자세한 설명은 생략..
쉽게 설명하자면 123.../ abc.../ ㄱㄴㄷ... 등 정렬되지 않은 배열을 정렬해주는 함수다.

하지만 변수에 sort()를 사용하여 정렬한 뒤 원본과 비교하는 작업을 하면 어떻게될까?

예를들어

  1. 정렬되지않은 숫자의 배열이 있고 (원본 배열)
  2. 원본 배열을 sort()를 사용하여 변수에다가 저장
  3. (원본배열 == 변수) == false?

    위 이미지와 같이 배열을 오름차순으로 정렬해 두었다.
    arr 를 콘솔로 찍어보면 [36,12,8,4,15,24,14,6,9,1,26] 이게 나오겠지?

    정답 : 아니다. (원본배열 == 변수) == true 이다.
    ???????????????????????????????????????????????????????????????????????????

그렇다면 왜 이렇게 됐을까?
나도 검색해서 알게된거지만(코린이) sort함수는 원본도 바꾼다.
아니 정확하게 말하면 위와같이 작성하면 원본도 바뀐다.
그렇기 때문에 원본은 유지하고 변수에만 정렬해서 가지고 싶다면 '비구조화 할당(destucturing assignment)' 표현식을 사용해야한다.

모질라 링크 참고
MDN 구조 분해 할당(destructuring assignment)
MDN 전개구문 (Spread syntax (...))

비구조화 할당은 [...] , {...} 를 사용하여 배열이나 객체 안의 값을 꺼내 쓸 수 있는 문법이다.
즉 원본은 유지시키고 변수에서만 바꿀수 있다.

profile
Node.js 주니어 개발자

0개의 댓글