JavaScript

33. [JavaScript] Computed Property & 객체에서 사용할 수 있는 메서드

drizzle0925 2022. 1. 13. 09:27
728x90

Computed Property(계산된 프로퍼티)

아래와 같은 코드가 있다고 가정합니다.

변수 a와 user 객체의 key값 중 일치하는 값(age)이 있습니다.

let a = 'age';

const user = {
    name : 'Mike',
    age : 30,
}

 

위에 코드를 아래와 같이 사용할 수 있습니다.

let a = 'age';
const user = {
    name : 'Mike',
    [a] : 30
}

대괄호로 묶어주면 [a]라는 값이 들어가는 것이 아니라 변수 a에 할당된 값이 들어가게 됩니다.

이를 Computed Property(계산된 프로퍼티)라고 부릅니다.

 

아래와 같이 식으로 넣을 수도 있습니다.

const user = {
    [1 + 4] : 5,
    ["안녕"+"하세요"] : "Hello"
}

//{
//    5:5,
//    "안녕하세요":"Hello"
//}

Methods

객체에서 사용할 수 있는 몇 가지 메서드에 대해서 알아봅시다

 

Object.assign() : 객체 복제

const user = {
    name : 'Mike',
    age : 30
}

const cloneUser = user;

 

cloneUser는 객체가 복제되지 않고 user의 참조값만 복사됩니다.

즉 아래와 같은 모습입니다.

 

cloneUser에서 이름을 변경하면 user의 이름도 변경됩니다.

 

동일하게 복제하려면 Object.assign 메서드를 사용해야 합니다.

이렇게 하면 빈 객체({})에 user가 병합되므로 복제되는 것입니다.

 

이름을 변경해도 user의 이름은 변경되지 않습니다.

const user = {
    name : 'Mike',
    age : 30
}

const newUser = Object.assign({}, user);
newUser.name = 'Tom';
console.log(user.name); // 'Mike'

 

병합할 때 다른 값이 있는 경우

user의 프로퍼티에 gender가 추가됩니다.

let user = {
  name:"Mike",
  age:30,
}

let user1 = Object.assign({gender:"male"}, user);
console.log(user1);

 

병합하는데 같은 키값이 있는 경우

덮어쓰게 됩니다.

let user = {
  name:"Mike",
  age:30,
}

let user1 = Object.assign({name:"Tom"}, user);
console.log(user1);

 

2개 이상 객체 합치기

const user = {
  name:'Mike'
}
const info1 = {
  age:30
}
const info2 = {
  gender:'male'
}
const user1 = Object.assign(user,info1,info2);
console.log(user1);

//{
//    "name":"Mike",
//    "age":30,
//    "gender":"male"
//}

 


Object.keys() : 키 배열 반환

const user = {
    name:'Mike',
    age:30,
    gender:'male',
}

let result = Object.keys(user);
console.log(result); // ["name","age","gender"]

Object.values() : 값 배열 반환

const user = {
  name:'Mike',
  age:30,
  gender:'male',
}

let result = Object.values(user);
console.log(result); // ["Mike",30,"male"]

Object.entries() : 객체의 키/값을 배열로 반환

const user = {
  name:'Mike',
  age:30,
  gender:'male',
}

let result = Object.entries(user);
console.log(result);

//[
//    ["name","Mike"],
//    ["age",30],
//    ["gender","male"]
//]

Object.fromEntries() : 키/값 배열을 객체로 반환

const arr = 
[
  ["name","Mike"],
  ["age",30],
  ["gender","male"]
];

let result = Object.fromEntries(arr);
console.log(result);

//{
//    name:"Mike",
//    age:30,
//    gender:"male"
//}
728x90