어제 배열 코플릿은 생각보다 쉽게 풀었다. 객체는 배열에 비해 어려울 수 있다고 멘토님이 말씀해주셨는데 실제로 배열에 비해 어려웠을 뿐 기본적인 틀은 비슷하게 느껴졌다.
오늘 배웠던 개념들을 정리해 보자
객체는 배열과 마찬가지로 다량의 데이터를 한 번에 다룰 수 있는 참조 자료형
데이터이다.
객체는 0개 이상의 프로퍼티
의 조합으로 되어있으며
프로퍼티
는 키와 값의 조합으로 이루어져있다.
배열이 데이터의 순서정보(index)를 가진 자료형이였다면
객체는 데이터에 이름(key)을 부여할 수 있다.
이 이름(key)을 통해 데이터에 의미를 부여할 수 있고 (key)를 사용해 데이터에 접근할 수 있다.
프로퍼티를 참조(Read)하는 방법은 두가지가 있다.
console.log(myCatDoi.이름)
console.log(myCatDoi["이름"]) // 반드시 문자열을 입력
console.log(myCatDoi[이름]) // 단, 문자열이 할당된 변수를 입력하는 것은 가능
function select(arr, obj) {
let newObj = {}; // 빈 객체를 선언
for (let prop in obj) {
for (let i = 0; i < arr.length; i++) {
if (prop === arr[i]) {
newObj[prop] = obj[prop]; // 다음과 같이 추가 가능
}
}
}
return newObj;
}
function removeProperty(obj, property) {
delete obj[property];
} //객체(obj)와 키(property)를 입력받아 키가 가리키는 속성(property)을 제거(delete)
console.log(Object.keys(obj)) // key(키)를 모아서 배열로
console.log(Object.values(obj)) //value(값)을 모아서 배열로
let user = {name: 'kimcoding', job: 'student'};
let info = {job: 'engineer', age: 25};
let userInfo = Object.assign(user, info);
console.log(userInfo); // 객체 합치기, 객체 복사
console.log(Object.is(obj1, obj2));
console.log(Object.is({}, {})); //두 객체가 같은지 비교
어제 다뤄본 for ~ of
문은 배열에서, for ~in
문이 객체에서 유용하게 쓰인다.
function extend(obj1, obj2) {
for (let key in obj2) { // obj2 순회
if (!(key in obj1)) { // 만약 obj1이 없으면
obj1[key] = obj2[key];
}
}
위 예시는 코플릿 19번에서 가져왔다.
두 개의 객체를 입력받아 두번째 객체의 속성들을 첫번째 객체에 추가하는 문제이다.