JAVASCRIPT
Object.assign
kimjiwon506
2023. 4. 11. 14:08
object.assign을 이용해서 객체를 합치는 것이 가능하다. 또한 합칠때 2개의 객체가 같은 프로퍼티를 가지고 있다면 그 값을 덮어쓰기 해주며 객체의 복제에도 사용할 수 있다.
const target1 = { a: 1, b: 2}
const target2 = { c: 3, d: 4}
const newTarget = Object.assign(target1, target2);
console.log(target1)
console.log(target2)
console.log(newTarget)
{ a: 1, b: 2, c: 3, d: 4 }
{ c: 3, d: 4 }
{ a: 1, b: 2, c: 3, d: 4 }
Object.assign()의 첫번째 인수의 target1은 target2가 합쳐지지만, target2의 내용은 변경되지 않는다.
또한, Object.assign()의 리턴값의 newTarget에 합쳐진 객체가 들어가있다. Object.assign의 리턴값은 target1이다.
const target1 = { a: 1, b: 2 }
const target2 = { b: 3, d: 4}
const newTarget = Object.assign(target1, target2);
console.log(target1)
console.log(target2)
console.log(newTarget)
{ a: 1, b: 3, d: 4 }
{ b: 3, d: 4 }
{ a: 1, b: 3, d: 4 }
target1의 프로퍼티 b는 target2의 프로퍼티 b로 덮어써진다.
2번째의 배열 객체의 lastName만을 변경하고 싶은 경우에 Object.assign을 이용할 수 있다.
people = [
{
firstName: 'kim',
lastName: 'one'
},
{
firstName: 'lee',
lastName: 'two'
},
{
firstName: 'park',
lastName: 'three'
}
]
changeNamePerson = {
firstName: 'lee',
lastName: 'second'
}
Object.assign(people[1], changeNamePerson)
[
{ firstName: 'kim', lastName: 'one' },
{ firstName: 'lee', lastName: 'two' },
{ firstName: 'park', lastName: 'three' }
]
{ firstName: 'lee', lastName: 'second' }
{ firstName: 'lee', lastName: 'second' }
object의 복사(클론)에도 사용된다.
let user = {firstName: 'John', lastName: 'Doe' };
let user_clone = Object.assign({}, user);
인수가 여러 개인경우
let user = {
username: "John",
};
let user_id = {
id: 1,
};
let email = {
email: "john@example.com",
};
user = Object.assign([user, user_id, email]);
console.log(user);
객체에 같은키가 있는경우 마지막으로 추가한 객체로 덮어씌워진다.
let user = {
id: 0,
};
let user_id_1 = {
id: 1,
};
let user_id_2 = {
id: 2,
};
let user_id_3 = {
id: 3,
};
user = Object.assign(user, user_id_1, user_id_2, user_id_3);
console.log(user);
form의 요소에서 사용할경우
const form = {
firstName: null,
lastName: null,
Email: null,
zipCode: null,
Address: null,
Phone: null
}
const input = {
firstName: 'John',
lastName: 'Doe',
Email: 'john@example.com'
}
Object.assign(form, input)
console.log(form)
{
firstName: 'John',
lastName: 'Doe',
Email: 'john@example.com',
zipCode: null,
Address: null,
Phone: null
}
const address = {
Address : {
Prefecture: 'Tokyo',
address_1: 'Setagaya-ku',
address_2: 'kyoudou1'
}
}
Object.assign(form, address);
console.log(form);
{
firstName: 'John',
lastName: 'Doe',
Email: 'john@example.com',
zipCode: null,
Address: {
Prefecture: 'Tokyo',
address_1: 'Setagaya-ku',
address_2: 'kyoudou1'
},
Phone: null
}