• Javascript/알고리즘 TIP

[Javascript] 배열 안에 숫자 순위 출력하기

Suro_1123 2023. 3. 24. 10:57

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]))

Output

코드설명 ↓

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부터 시작하게 해준다.