이번에는 정렬과 관련된 메서드를 소개해드리겠습니다.
Array.sort([compareFunction])
sort() 메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다.
문제를 보면 오름차순으로 정렬 후 가장 작은 5개의 수를 제외하고 리스트를 배열에 담아 return하는 문제입니다.
먼저, sort()메서드를 활용하였을 때 오름차순으로 잘 정렬이 되는지 확인해 보았습니다.
function solution(num_list) {
const result = num_list.sort()
console.log(result)
}
근데 결과값이 오름차순으로 정렬이 되지 않는 것입니다.ㅠㅠ 원래대로라면 [1,4,10,...] 와 같이 나와야 하는데.. '왜 이러는거지..'하는 생각과 함께 구글링을 해보았습니다.
Array.sort([compareFunction]) 에서 compareFunction이 생략될 경우 배열의 element들은 문자열로 취급되어, 유니코드 값 순서대로 정렬
이 내용을 알게 되었습니다. 그래서 오름차순대로 정렬이 되지 않았던 거예요!
그래서 제가 사용한 방법은 다음과 같습니다.
function solution(num_list) {
const result = num_list.sort((a,b) => {
return a-b
})
}
이렇게 a,b를 활용한 단순계산방식을 활용하게 되면
위와 같은 이유로 오름차순으로 정렬된 배열의 형태를 확인할 수 있습니다.
function solution(num_list) {
let arr = []
const result = num_list.sort((a,b) => {
return a-b
})
for(let i=5;i<result.length;i++){
arr.push(result[i])
}
return arr
}
저는 오름차순으로 정렬된 배열에서 가장 작은 5자리를 제외해야하니깐 i=5로 시작하는 for문을 작성하였습니다. 다른사람들의 풀이를 보니 splice()를 활용하여 문제를 푸신 분들이 많더라구요! 저도 다음에는 sort(),splice()를 활용하여 문제를 풀어봐야겠습니다!