const person = {
name : "홍길동",
age : 20,
}
person.name = null;
delete person.age;
console.log(person) // {name: null}
const person2 = {
'first name' : "홍",
1.5 : "1.5가 저장됨",
0 : "0도 키값이 될 수 있음"
'-1': "문자열을 이용하면 가능",
// -1 : "음수는 키값이 될수 없음", (X) 에러
age:20,
}
person2.first name // 에러 [ ]를 이용해 접근해야함 (X)
perosn2['first name'] // "홍" (O)
person2[1.5] // "1.5가 저장됨" (O)
person2['0'] // "0도 키값이 될 수 있음" (O)
person2['-1'] // "문자열을 이용하면 가능" (O)
[ ]를 이용하면 키값을 동적으로 설정할 수 있음.
const first = "firstName"
const last = "lastName"
const person = {
[first] : "홍",
[last] : "길동",
}
console.log(person) // {firstName: '홍', lastName: '길동'}
console.log(person.firstName) // "홍" (O)
console.log(person['firstName']) // "홍" (O)
console.log(person[firstName]) // ReferenceError: firstName is not defined (X)
console.log(person[last]) // "길동"
const myObject = {
b: 2,
a: 1,
c: 3,
};
for (const key in myObject) {
console.log(key); // 출력 순서: b, a, c
}
const keys = Object.keys(myObject);
console.log(keys); // 출력 순서: b, a, c
const myObject = {
3: 'Three',
1: 'One',
2: 'Two',
10: 'Ten',
};
for (const key in myObject) {
console.log(key); // 출력 순서: 1, 2, 3, 10
}
순서가 중요하다면 배열을 이용하거나 Map객체를 이용하는 것이 더 적절함.
객체는 키와 값 쌍으로 저장되어 있기 때문에 키값이 더 중요함.
const person = {
name: "홍길동",
age: 20,
job: "회사원",
}
for(const key in person){
console.log('key: '+ key)
console.log('person[key]: '+ person[key])
}
"key: name"
"person[key]: 홍길동"
"key: age"
"person[key]: 20"
"key: job"
"person[key]: 회사원"
const key1 = "key1";
const key2 = "sky";
const arr = [
{[key1]: "강아지"}, // 서로 다른 키값
{[key2]: "고양이"}, // 서로 다른 키값
]
arr.forEach((item)=>{
for(const key in item){ //for in을 이용하면 동적 키값을 이용가능
console.log(`${ [key] } : ${ item[key] }`)
//"key1 : 강아지" 와 "sky : 고양이" 가 출력됨.
}
})
const person = {
name : "홍길동",
age : 20,
job : ["회사원","남편"]
}
const person2 = person
person.age = 30; // 원본 객체의 나이를 변경
console.log(person.age) // 30
console.log(person2.age) // 30
// 참조값이 할당되어 person을 바꾸면 person2도 바뀜.
const person = {
name : "홍길동",
age : 20,
job : ["회사원","남편"]
}
const person2 = {...person} // ...연산자를 이용
person.age = 30;
console.log(person.age) // 30
console.log(person2.age) // 20
const person = {
name : "홍길동",
age : 20,
job : ["회사원","남편"]
}
const person2 = {...person}
person.job.pop()
console.log(person.job) // ["회사원"]
console.log(person2.job) // ["회사원"]
const person = {
name : "홍길동",
age : 20,
job : ["회사원","남편"]
}
const person2 = {...person, job:[...person.job]}
person.job.pop()
console.log(person.job) // ["회사원"]
console.log(person2.job) // ["회사원","남편"]
const person = {
name : "홍길동",
}
const person2 = {
age : 30,
}
const person3 = {
job : "회사원",
}
const newPerson = Object.assign(person, person2, person3)
// 더 많은 객체가 올 수 있음
console.log(newPerson)
// {"name": "홍길동", "age": 30, "job": "회사원"}
const person = {
name : "홍길동",
}
const newPerson = Object.assign({}, person)
person.name = "김짱구"
console.log(person.name) // "홍길동"
console.log(newPerson.name) // "김짱구"
const person = {
name : "홍길동",
job : ["회사원","남편"],
}
const newPerson = Object.assign({},person)
person.job.pop()
console.log(person.job) // ["회사원"]
console.log(newPerson.job) // ["회사원"]
const person = {
name : "홍길동",
age: 20,
job : ["회사원","남편"],
}
const { name } = person; //{ }를 이용해 해당 키의 값을 가져옴
// 구조 분해 되지않은 값들은 가져오지않음
console.log(name) // "홍길동"
const person = {
name : "홍길동",
age: 20,
job : ["회사원","남편"],
}
const { name, ...otherProps } = person;
console.log(name) // "홍길동"
console.log(otherProps) // {age: 20, job: Array(2)}
const person = {
name : "홍길동",
}
const { name: chageName } = person; // :를 이용하면 이름을 바꿀수있음
console.log(name) // 없는 변수(출력되지않음)
console.log(chageName) //"홍길동"
const person = {
name : "홍길동",
age: 20,
job : ["회사원","남편"],
}
console.log("name" in person) // true
console.log("first" in person) // false
const person = {
name : "홍길동",
age: 20,
job : ["회사원","남편"],
}
if("name" in person){
// person객체에 name이라는 키가 있다면 진행 될 코드...
console.log("name 프로퍼티가 있을때...")
} else{
// person객체에 name이라는 키가 없다면 진행 될 코드...
console.log("name 프로퍼티가 없을때...")
}