데이터를 가공하다보면 아래와 같이 키 이름이 정렬이 안되어있을때가 있다.
이 Object를 키 이름 순으로 정렬하려고 한다.
ex) TOTALTM -> price01 -> price02 -> price03 -> 결제상태
그 전에, Object가 아닌 배열 하나의 정렬 부터 해보자면 아래와 같이 할 수 있다.
let test = {"TOTALTM":1, "price02":20, "price03":1000, "price01":200, "결제상태":"주문완료"}
Object.keys(test).sort().reduce((n,key) => {
n[key] = test[key];
return n;
}, {}
);
1) Object.keys() : 배열의 키 만 모아서 배열로 반환한다.
ex) Object.keys(test) => ['TOTALTM', 'price02', 'price03', 'price01', '결제상태']
2) sort() : 배열을 정렬한다.
ex) Object.keys(test) .sort() => ['TOTALTM', 'price01', 'price02', 'price03', '결제상태']
여기까지하면 벌써 키 이름으로 정렬이 됐다.
이제 키에 맞는 값을 대입하면된다.
3) reduce(acc, cur) : 배열을 돌면서 주어진 함수를 실행하고 결과값을 반환한다.
- acc(accumulator) : 누산기, 누적되어 최종적으로 출력되는 값
- cur(current) : 현재 요소
test[key]로 값을 찾아서 그 값을 새로운 배열 n[key]에 넣어주면서 정렬된 배열 n을 반환한다.
여기까지 배열 하나의 정렬이 이해됐으면 객체는 배열이 모인것이므로
응용하여 반복문을 통해 정렬할 수 있다.
객체 예제
let test = [
{"TOTALTM":1, "price02":20, "price03":1000, "price01":200, "결제상태":"주문완료"},
{"TOTALTM":5, "price02":10, "price03":2000, "price01":300, "결제상태":"취소"},
{"TOTALTM":7, "price02":10, "price03":5000, "price01":500, "결제상태":"주문완료"}
]
키 이름으로 정렬
let totalSortList = [];
let tempList;
for(let i in test) {
let val = test[i];
tempList = Object.keys(val).sort().reduce((n,key) => {
n[key] = val[key];
return n;
}, {})
totalSortList.push(tempList)
}
정렬된 배열 하나하나 반환된거를 totalSortList에 추가하여
최종 정렬된 Object를 출력했다.
키 이름으로 정렬이 아닌, 객체의 값으로 정렬을 알고싶다면 아래 링크 클릭!
https://luanaeun.tistory.com/254
도움이되었다면 좋아요 눌러주세요~
'프로그래밍 언어 > JavaScript' 카테고리의 다른 글
JavaScript) 원하는 위치로 이동하기, 특정 위치로 이동. 스크롤 이동. 자바스크립트 scrollTo (0) | 2024.04.17 |
---|---|
JavaScript) 객체 키 이름 변경하기 (0) | 2023.12.27 |
JavaScript) 자바스크립트 객체 내 같은 값 찾기, 추출하기. 특정 값 추출하기, 객체 특정 값 기준으로 정렬하기. 객체 정렬 (0) | 2023.12.07 |
JavaScript) 자바스크립트 리스트(배열), 문자열 포함 여부 확인 (0) | 2023.10.18 |
JavaScript) 객체(Object) 내 배열에서 중복 값 찾아서 제거하기 (0) | 2023.08.11 |