티스토리 뷰

Language/Javascript

객체와 객체 탐색

Seogineer 2020. 12. 28. 18:22

객체 선언

let obj = {name:"seogineer", age:20};
console.log(obj.name);    //seogineer
console.log(obj["name"]);    //seogineer

객체 추가/삭제

obj["name"] = "seo";
console.log(obj);    // { name: 'seo', age: 20 }

obj.job = "developer"
console.log(obj);    // { name: 'seo', age: 20, job: 'developer' }

객체 탐색


//value값이 숫자인 key만 출력

const data = {
    "debug": "on",
    "window": {
        "title": "Sample Konfabulator Widget",
        "name": "main_window",
        "width": 500,
        "height": 500
    },
    "image": { 
        "src": "Images/Sun.png",
        "name": "sun1",
        "hOffset": 250,
        "vOffset": 250,
        "alignment": "center"
    },
    "text": {
        "data": "Click Here",
        "size": 36,
        "style": "bold",
        "name": "text1",
        "hOffset": 250,
        "vOffset": 100,
        "alignment": "center",
        "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
    }
}

let arr = [];

function findNum(data){
  for(key in data){
    if(typeof data[key] == 'object') {
      findNum(data[key]);
    } else if(typeof data[key] == 'number'){
      arr.push(key);
    }
  }
}

// function findNum(data){
//   Object.keys(data).forEach(function(value){
//     if(typeof data[value] == 'object'){
//       findNum(data[value]);
//     } else if(typeof data[value] == 'number'){
//       arr.push(value);
//     }
//   });
// }

findNum(data);
console.log(arr);

결과

[ 'width', 'height', 'hOffset', 'vOffset', 'size', 'hOffset', 'vOffset' ]

객체 탐색2


// type이 sk인 배열의 name의 value만 출력

const data = [{
    "id": 1,
    "name": "Yong",
    "phone": "010-0000-0000",
    "type": "sk",
    "childnode": [{
        "id": 11,
        "name": "echo",
        "phone": "010-0000-1111",
        "type": "kt",
        "childnode": [{
                "id": 115,
                "name": "hary",
                "phone": "211-1111-0000",
                "type": "sk",
                "childnode": [{
                    "id": 1159,
                    "name": "pobi",
                    "phone": "010-444-000",
                    "type": "kt",
                    "childnode": [{
                            "id": 11592,
                            "name": "cherry",
                            "phone": "111-222-0000",
                            "type": "lg",
                            "childnode": []
                        },
                        {
                            "id": 11595,
                            "name": "solvin",
                            "phone": "010-000-3333",
                            "type": "sk",
                            "childnode": []
                        }
                    ]
                }]
            },
            {
                "id": 116,
                "name": "kim",
                "phone": "444-111-0200",
                "type": "kt",
                "childnode": [{
                    "id": 1168,
                    "name": "hani",
                    "phone": "010-222-0000",
                    "type": "sk",
                    "childnode": [{
                        "id": 11689,
                        "name": "ho",
                        "phone": "010-000-0000",
                        "type": "kt",
                        "childnode": [{
                                "id": 116890,
                                "name": "wonsuk",
                                "phone": "010-000-0000",
                                "type": "kt",
                                "childnode": []
                            },
                            {
                                "id": 1168901,
                                "name": "chulsu",
                                "phone": "010-0000-0000",
                                "type": "sk",
                                "childnode": []
                            }
                        ]
                    }]
                }]
            },
            {
                "id": 117,
                "name": "hong",
                "phone": "010-0000-0000",
                "type": "lg",
                "childnode": []
            }
        ]
    }]
}]

let arr2 = [];

// function findSk(data){
//   for(key in data){
//     if(data[key].type == 'sk'){
//       arr2.push(data[key].name);
//     }
//     if(data[key].childnode.length > 0){
//       findSk(data[key].childnode);
//     }
//   }
// }

function findSk(data){
  data.forEach(function(value){
    if(value.type == 'sk'){
      arr2.push(value.name);
    }
    if(value.childnode.length > 0){
      findSk(value.childnode);
    }
  });
}

findSk(data2);
console.log(arr2);

결과

[ 'Yong', 'hary', 'solvin', 'hani', 'chulsu' ]

'Language > Javascript' 카테고리의 다른 글

버블링(Bubbling)과 Event delegation  (0) 2020.12.30
DOMContentLoaded 이벤트  (0) 2020.12.30
배열과 배열 탐색, 함수  (0) 2020.12.28
appendChild(), insertBefore()  (0) 2020.12.27
parentElement, parentNode  (0) 2020.12.26
댓글
Total
Today
Yesterday
링크
Apple 2023 맥북 프로 14 M3, 스페이스 그레이, M3 8코어, 10코어 GPU, 512GB, 8GB, 한글