반응형
코딩을 하다보면 빈번하게 객체를 정리 해야하는 경우를 만나게 된다.
배열의 경우엔 Sort 함수를 사용하면 되지만 객체의 경우엔 몇 가지 제약이 있다.
기본적으로 Object를 저장형 데이터로 사용할 경우에는 Object를 사용하기 보단 Map을 사용하는 것이
좋다. 어쩔수 없이 Object를 사용하는데 정렬이 필요할 때 참고 바랍니다!
다양한 해결 방법이 있었는데, 그중 하나를 정리한다.
let object = {
a : 20,
b : 30,
c : 40,
d : 35,
}
형식의 객체가 있다고 했을 때 Value를 기준으로 정리하는 방식이다.
const sortObject = [];
for(const item in object) {
sortObject.push([item, object[item]]);
}
sortObject.sort((a,b) => {
return a[1] - b[1];
})
배열로 변환한 다음 Sort 함수를 사용해서 정렬하는 방식이다.
Object.keys를 사용하는 방법도 있지만 배열로 변환해서 정렬하는 방식이 더 많은 상황에서
사용할 수 있다고 생각이 들어서 결정했다.
const sortObject = [];
for(const item in object) {
sortObject.push([item, object[item]]);
}
sortObject.sort((a,b) => {
if(a[1] > b[1]) {
return -1;
}else if(a[1] === b[1]) {
return b[0] - a[0];
}else {
return 1;
}
return a[1] - b[1];
})
만약 Object의 value만 비교하는 것이 아닌 value가 같은 경우 key를 보고 정렬하는 상황도 조금만
수정해주면 정렬이 가능하다.
만약 Map을 사용한다면
const mapData = new Map();
mapData.set(1,123);
mapData.set(2,345);
mapData.set(3,789);
const mapToArray = [...mapData];
사용해서 배열로 변경 후 동일하게 사용하면 된다.
반응형
'JavaScript' 카테고리의 다른 글
[JavaScript] ?? 문법 (1) | 2022.09.22 |
---|---|
[JavaScript] 콘솔로 입력받기 (1) | 2022.09.15 |
[JavaScript] 일반 함수 vs 화살표 함수 (1) | 2022.09.11 |
[JavaScript] 원하는 크기의 2차원 배열 만들기 (1) | 2022.08.11 |
[JavaScript] ==과 === 차이 (1) | 2022.06.20 |