본문 바로가기
JavaScript

[자바스크립트-객체] 객체의 값을 기반으로 키를 정렬하는 법

by 1two13 2023. 1. 31.
728x90
반응형

아래와 같은 객체가 있다고 가정을 해보고, 객체의 값이 큰 순서대로 정렬된 키를 결과로 얻고 싶을 때는 어떻게 해야할까? 코딩테스트를 연습하다가 정리를 해보면 좋을 거 같아서 작성해보았다. 

const obj = { '1': 1, '2': 3, '3': 4, '4': 2 }

 

2가지 방법


1. for in문을 활용하여 새로운 array를 다시 만드는 방법

  • for in문을 활용하여 객체의 키와 값으로 새로운 배열을 만들고, 그 배열을 sort하는 방법이 있다.
let sortArray = [];
for (let key in obj) {
  sortArray.push([key, obj[key]]);
}
console.log(sortArray); // [ [ '1', 1 ], [ '2', 3 ], [ '3', 4 ], [ '4', 2 ] ]

sortArray.sort(function (a, b) {
  return b[1] - a[1];
});
console.log(sortArray); // [ [ '3', 4 ], [ '2', 3 ], [ '4', 2 ], [ '1', 1 ] ]

let result = [];
sortArray.map((arr) => result.push(Number(arr[0])));
console.log(result); // [3, 2, 4, 1]
728x90

2. Object.entries를 이용한 방법

  • 단, es8이 지원되는 브라우저에서만 가능하다.
const sortable = Object.entries(obj).sort(([, a], [, b]) => b - a);

let result = [];
sortable.map((arr) => result.push(Number(arr[0])));
console.log(result); // [3, 2, 4, 1]

1. Object.entries(객체명)을 사용하여 이중 배열로 만들고,

[ [ '1', 1 ], [ '2', 3 ], [ '3', 4 ], [ '4', 2 ] ]

 

2. 값이 큰 순서대로 sort 한다.

[ [ '3', 4 ], [ '2', 3 ], [ '4', 2 ], [ '1', 1 ] ]
반응형

참고자료


728x90
반응형

댓글