[JS] sort로 객체 문자열 정렬하기

yoon·2022년 9월 6일

코딩테스트

목록 보기
3/8

sort는 항상 숫자 정렬만하다가 문자열 정렬을 처음 해봐서 기록!
프로그래머스 문제인데 문제는 [문자열 내 마음대로 정렬하기]

function solution(strings, n) {
    var answer = strings.map((item) => ({key: item[n], value: item}))
        .sort((a, b) => a.key === b.key ? (a.value < b.value ? -1 : 1) : (a.key < b.key ? -1 : 1))
        .map(item => item.value)
    return answer;
}

정렬해야하는 기준에 같은 값이 오면 원본 문자열 자체를 비교해야 하므로 객체로 만들어 key를 기준으로 정렬하고, key 값이 동일하면 value 값으로 정렬했다. 정렬이 다 됐으므로 value 값만 필요하므로 value만 남겨둔다.

참/거짓이 숫자로 1, 0인 것을 참고해서 sort 부분을

function solution(strings, n) {
    var answer = strings.map((item) => ({key: item[n], value: item}))
        .sort((a, b) => a.key === b.key ? ((a.value > b.value) - (a.value < b.value)) : ((a.key > b.key) - (a.key < b.key)))
        .map(item => item.value)
    return answer;
}

로 작성해도 된다. 이렇게 쓰면 이중 삼항연산자를 안 써도 된다.

profile
얼레벌레 개발자

0개의 댓글