문제 소개
다음과 같이 여러 개의 숫자 값을 가진 객체가 있다고 가정해 보겠습니다.
const obj = {
key1: 56,
key2: 67,
key3: 23,
key4: 11,
key5: 88
};이 객체를 입력받아 객체의 값들을 오름차순으로 정렬한 배열을 반환하는 자바스크립트 함수를 작성해야 하며, 최종적으로 다음과 같은 결과를 얻어야 합니다.
const arr = [11, 23, 56, 67, 88];
즉, 객체의 값(value)들을 추출한 뒤 숫자 크기 기준으로 정렬하여 하나의 배열에 담는 것이 목표입니다.
구현 방법
구현은 다음 세 단계로 진행할 수 있습니다.
1단계: Object.keys() 메서드를 사용해 객체의 모든 키를 배열 형태로 가져옵니다.
2단계: map() 메서드로 각 키에 대응하는 값만 추출하여 값들로 이루어진 배열을 만듭니다.
3단계: sort() 메서드에 비교 함수 (a, b) => a - b를 전달해 숫자 오름차순으로 정렬합니다. 비교 함수를 생략하면 요소가 문자열로 취급되어 의도하지 않은 순서로 정렬될 수 있으므로 반드시 지정해 주어야 합니다.
전체 코드
위 과정을 적용한 완성된 코드는 다음과 같습니다.
const obj = {
key1: 56,
key2: 67,
key3: 23,
key4: 11,
key5: 88
};
const sortObject = obj => {
const arr = Object.keys(obj).map(el => {
return obj[el];
});
arr.sort((a, b) => {
return a - b;
});
return arr;
};
console.log(sortObject(obj));출력 결과
코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.
[ 11, 23, 56, 67, 88 ]