객체

객체는 데이터와 메서드의 집합이다. 자바스크립트 객체는 프로퍼티의 모음이며, 프로퍼티는 key, value 구조로 이루어진다. 프로퍼티의 값으로 함수가 될 수 있는데, 이런 프로퍼티는 메소드라고 부른다.

선언

객체 선언은 두 가지 방식으로 가능하다.

var obj = { name : "crong", age : 20} // literal

var obj = new Object(); // 생성자 형식

삽입/삭제

객체 선언은 두 가지 방식으로 가능하다.

const obj = { name: "ko" };

// 프로퍼티 추가
obj.age = 28; // dot

obj['weight'] = 70; // 괄호 표기법


// { name: 'ko', age: 28, weight: 70 }

탐색

  • For - In
  • Object.keys(obj);
  • Object.values(obj);
const obj = {
  name : "ko"
  ,age : 28
  ,weight : 70
};

// for - in
for(key in obj) {  console.log(key, obj[key]); }

/*
  name ko
  age 28
  weight 70
*/

// Object.keys(obj)
Object.keys(obj).forEach(function(key) {  console.log(obj[key]); });

/*
  name ko
  age 28
  weight 70
*/


// Object.values(obj)
Object.values(obj).forEach(function(value) {  console.log(value); });

/*
  ko
  28
  70
*/

파싱 예제

input : object ex · GitHub
요구사항: 숫자 타입으로만 구성된 요소를 뽑아 배열을 만들어보도록 해보세요.
output : ["width", "height", "hOffset", "vOffset", "size", "hOffset", "vOffset"]

function rec(object, result) {
  for(key in object) {
      if(object[key].constructor === Object) {  rec(object[key], result); }
      else if(!isNaN(object[key])) { result.push(key); }

  }

}

const ret = [];
rec(data, ret);
console.log(ret);

input : json_tree · GitHub
요구사항: type이 sk인, name으로 구성된 배열만 출력해봅니다.
output : ["Yong", "hary", "solvin", "hani", "chulsu"]

function rec(object, result) {
  let isAdd = false;
  for(key in object) {
      if(object[key].constructor === Object || object[key].constructor === Array) {  rec(object[key], result); }
      else if(!isAdd && object['type'] === 'sk') {
        result.push(object['name']);
        isAdd = true;

      }

  }

}

const ret = [];
rec(data, ret);
console.log(ret);