본문 바로가기

Local Oriented/jQuery

json 데이타에 key 로 등록한 연도를 역순으로 정렬하여 추출하는 방법

var jsonData = {data:{
  2020:{// year
    imgGroup:{
      '03':{//문자열
       ......
}

상기와 같이 데이타가 세팅될 때..
2020, 2019, ... 와 같이 수치를 뽑고 싶다면,
for(year in jsonData.data){
  console.log(year);
}
와 같이 하면 될까..? 답은 '안 된다'.
왜냐면, 2020 을 수치로 보고 오름차순으로 자동 정렬하기 때문.

그런데, 문자열로 인식하면 오름차순 정렬을 하지 않는다.
문자열로 인식하게 한다고 2020 이라고 세팅했던 것을,
'2020':{
와 같이 세팅하면 될까..? 답은 '안 된다'.

'문자열' 로 인식하게 하려면,
문자가 들어있거나
허용되는 특수문자 가 들어가 있거나,
'02', '01' 이런식으로 앞에 '0' 이 들어가도록 따옴표를 사용하거나..
그러나, 여기에서는 연도를 역순으로 하려는 것이므로,
상기와 같은 방법으로는 사용할 수 없다.
물론, '02020', '02019', .. 와 같이 세팅하고
앞의 문자를 삭제하거나 뒤에 있는 4개의 문자를 추출할 수도 있겠지만..

배열이라면 역으로 돌릴 수도 있겠으나,
특정 연도 아래에 있는 데이타를 배열로 찾는 것보다는..
key 로 등록하여 찾는 것이 빠르기도 하고 코드도 간단.
물론, 연도만 추출하는 것이라면, 연도를 배열에 담아 역으로 돌려도 되겠지만..
연도 안에 있는 데이타를 추출하여 활용하는 것이 주 목적이고,
연도를 역순으로 추출하는 것은 옵션이기 때문..

한참을 찾던 끝에..

아래와 같이 Object 를 reverse() 해서 forEach() 하면 해결.
Object.keys(jsonData.data).reverse().forEach(function(year){
  console.log(year);
}

.fine.