📁 Language/🟨 Javascript

[Javascript] Object.keys() 객체 안 키값 개수 구하기

염비 2024. 9. 2. 14:25

퍼블리싱에서 자체적으로 약관 정보를 객체로 받아와

뿌릴 수 있는 소스를 짜보려다가 (별 건 아니지만) 알게 된 걸 기록하려 한다.


 

let termList = [{
    prdCode: {
        criticalAgr: { /** 필수약관 **/
            state: termStateData.criticalAgr.termState
            , text: termStateata.criticalAgr.termText
            , GROUP: [{
                GRP0: {
                    GRP_NAME: groupName.PMDS
                    , GRP_CONTENT: {
                        DEPT1_AGR: ['944', '945', '946'],
                    }
                },
                GRP1: {
                    GRP_NAME: groupName.APCU
                    , GRP_CONTENT: {
                        DEPT1_AGR: ['811', '812', '813', '814'],
                    }
                }
            }]
        }
        , optionalAgr: { /** 선택약관 **/
            state: termStateData.optionalAgr.termState
            , text: termStateData.optionalAgr.termText
            , GRP0: {
                GRP_NAME: groupName.SIWS
                , GRP_CONTENT: {
                    AGR_CODE: '100' //단건
                }
            }
        }
    }
}];

 

일단 이게 내가 적어둔 약관 리스트 변수 소스였다.
(중간중간 정체 모를 key나 value값들은 무시하도록 하자. 중요하지 않다.)

termList는 배열로,
해당 배열 안에 들어있는 key값(prdCode)에 접근하고 싶으면 termList[0] <= 이런 식으로 내가 직접 써서 접근을 해야했다..

근데 나는 이게 너무 싫어서(ㅋㅋㅋ)
최대한 for문 안에서 돌리고 싶은 마음에 객체의 키값에 접근하는 방법을 찾아봤다.


Object.keys(obj);
//여기서 obj는 내 소스로 따지면 'termList'

이렇게 선언하면 접근할 수 있다고 한다.

정확히 어떻게 접근해야 내가 원하는 정보를 얻어낼 수 있을지 궁금해서 여러 가지를 콘솔로 찍어봤는데

console.log(Object.keys(termList[0].prdCode)); // (2) ["criticalAgr", "optionalAgr"]
console.log(Object.keys(termList[0].prdCode).length); // 2
console.log(Object.keys(termList[0])); // ["uuc"]
console.log(Object.keys(termList)); // ["0"]

각각의 코드별로 위와 같은 값을 얻어냈다.

내가 놀란 것은,
객체 안의 정보에만 접근할 수 있다고 생각했는데
Object.keys(termList) 를 콘솔로 찍어보았을 때, 배열의 순서(0) 값을 반환해냈다는 것이다.

배열도 결국엔 커다란 객체의 형태를 가지고 있는 건가, 싶어지면서 여러 가지 방법으로 안에 들어있는 정보에 접근할 수 있는 방법을 알게 돼서 기뻤다. ㅎㅎㅎ

그래서 후다닥 기록하러 옴..