자료구조 및 알고리즘/JavaScript Practice

JS Practice) 숫자와 문자가 섞인 배열 정렬하기

Ryomi 2023. 2. 22. 01:57
728x90
반응형

< 숫자와 문자가 섞인 배열 정렬하기 >

let arr = ['b', 3, 111, 'a', 1, 7, 'c'];

arr.sort((a, b) => {
    if(typeof a === "string" && typeof a !== typeof b) {
        return -1;
    } else if (typeof b === "string" && typeof a !== typeof b) {
        return 1;
    } else {
        return a < b ? -1 : a === b ? 0 : 1;
    }
});
//['a', 'b', 'c', 1, 3, 7, 111]


- a와 b를 비교했을 때, a가 string, b가 number일 경우, 'return -1'을 하여 (a, b) 순으로 위치시킨다.
: 'return -1'은 a를 b 앞에 위치시킨다.
: 이미 (a, b) 순으로 위치하므로 순서 변화는 없다.
- a와 b를 비교했을 때, b가 string, a가 number일 경우, 'return 1'을 하여 (b, a) 순으로 위치시킨다.
: 'return 1'은 a와 b의 순서 swap
- 그럼 string은 앞에, number는 뒤에 위치하게 된다.
- a와 b의 크기 비교를 할 수 없는 경우, 순서에 변화는 없다
- 이후 else문을 통해 숫자 간, 문자 간 비교가 진행된다
- 'a < b'인 경우와 'a === b' a와 b의 순서변화는 없고, 'a > b'인 경우, 순서 swap

JS) arr.sort()

관련 포스트) JS) Array Method < Array > JS) Array < Array > - structure : let fruit = ['banana', 'apple', 'kiwi']; - 대괄호로 감싸고 쉼표로 구분 - 순서(index)가 있는 리스트 - 문자, 숫자, 객체, 함수 등을 포함 - 배열

premubo.tistory.com

728x90
반응형