객체(Object)
기본
const user = {
name: "Kim",
age: 29,
"phone-number": "010-1234-5678",
greet() { return `Hi, ${this.name}`; },
};
user.name; // "Kim"
user["age"]; // 29
user["phone-number"]; // 하이픈 키는 대괄호만 가능
user.greet(); // "Hi, Kim"
user.city = "Seoul"; // 동적으로 추가
delete user.age // 삭제
ES6 객체 리터럴
const name = "Lee", age = 30;
const key = "country";
const person = { name, age }; // 키와 변수명이 같으면 축약
const obj = { [key]: "KR" }; // [key]를 통하여 obj에 key:value 추가
객체의키/값 유틸리티
const user = { name: "Kim", age: 29 };
Object.keys(user); // ["name","age"]
Object.values(user); // ["Kim",29]
Object.entries(user); // [["name","Kim"],["age",29]]
for (const [k, v] of Object.entries(user)) {
console.log(k, v); // ["name","Kim"],["age",29]
}
옵셔널 체이닝/널 병합
const u = { profile: { contact: null } };
u.profile?.contact?.email; // undefined (중간이 null/undefined면 멈추고 undefined)
const display = u.nickname ?? "Guest"; // null/undefined일 때에만 기본값
동등 비교
- 객체/배열은 참조 비교: {} === {} → false
- 값으로 비교하려면 직접 비교 로직(정렬 후 문자열화 등) 혹은 라이브러리 사용.
배열(Array)
기본
const nums = [1, 2, 3];
nums.length; // 3
nums[0]; // 1
Array.isArray(nums); // true
불변 vs 가변
| 불변(원본 유지) |
가변(원본 변경) |
| map, filter, reduce, slice, concat, toSorted, toReversed, toSpliced, with, flat, flatMap, includes, find, findIndex, findLast, findLastIndex, indexOf, lastIndexOf, join, every, some, entries/keys/values |
push, pop, shift, unshift, splice, sort, reverse, fill, copyWithin |