객체는 데이터와 메서드의 집합이다. 자바스크립트 객체는 프로퍼티의 모음이며, 프로퍼티는 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 }
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);