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;
}
로 작성해도 된다. 이렇게 쓰면 이중 삼항연산자를 안 써도 된다.