Ranking numbers in an array using JavaScript
Javascript에서 Array안에 숫자들을 큰 숫자를 기준으로 순위를 출력하고 싶으면?
function solution(data) {
return data // (4) [30, 60, 10, 100]
}
console.log(solution([30, 60, 10, 100]))
배열 [30, 60, 10, 100]이 주어지고 숫자들을 큰 순서대로 랭킹을 주고싶다.
Ex) 100, 60, 30, 10순으로 크기 때문에 [3, 2, 4, 1] 출력이 나와야함
정답 ↓
function solution(data) {
let num = data.slice().sort((a, b) => b - a)
return data.map(el => num.indexOf(el) + 1) // [3, 2, 4, 1]
}
console.log(solution([30, 60, 10, 100]))
코드설명 ↓
let num = data.slice().sort((a, b) => b - a)
1. 기본으로 sort는 원본 배열을 바꾼다 (파괴적 처리)
2. data에 있는 원본 배열을 바꾸지 않기 위해 slice
3. sort((a, b) => b - a) → 내림차순 정렬한 값을 num에 저장
return data.map(el => num.indexOf(el) + 1)
1. data.map으로 원본 배열을 순회한다.
2. 정렬한 값이 담겨있는 num을 indexOf의 인자로 el(원본 요소)를 넣어 찾아준다.
3. +1을 해주어 0부터 시작이 아닌 1부터 시작하게 해준다.
'• Javascript > 알고리즘 TIP' 카테고리의 다른 글
[Javascript] Number to Array (숫자를 배열로 변환) (0) | 2024.02.02 |
---|