728x90
반응형
// Object.assign(); - 객체 복제 메소드
const user = {
name: "kay",
age: 30,
};
const cloneUser = user;
// 이렇게 하면 복제가 되는 것이 아니다.
cloneUser.name = 'ddd';
// 유저의 이름도 변경됨
// 복제된게 아니라 하나의 객체를 두 변수가 접근하고 있는 것.
//cloneUser == user
복제를 하려고 저렇게 바로 user를 할당하면
복제가 되는 것이 아니라 하나의 객체(user객체에) 두개의 변수가 접근하고 있는 것임.
결과를 보면 cloneUser의 이름을 바꿨는데 user의 이름이 바뀜.
복제를 위해서는 Object.assign(); 메소드를 사용한다.
const newUser = Object.assign({}, user);
// {}에 초기값 -- 빈객체에 새로운 값이 들어오는 것이므로 복제가 되는 것
newUser.name = 'lina';
console.log(user);
// user는 변하지 않음 newUser != user
콘솔로 확인해보면
newUser의 이름을 바꿔도 기존 user의 이름은 변화하지 않는다.
만약 초깃값에 무언가가 있을 경우
const newUser = Object.assign({gender: 'male'}, user);
// 초깃값에 젠더가 있는 상태로 유저의 값이 들어오므로
// 같은 값이 들어오면 덮어쓰기 됨!
초기값과 유저의 값이 병합됨
만약 같은 속성의 값이 들어오면 덮어쓰기 됨.
각기 다른 값이 있을 때 - 병합 가능
const user = {
name: 'mike'
}
const info1 = {
age: 30
}
const info2 = {
gender: 'male'
}
const newUser = Object.assign(user, info1, info2);
// 각기 다른 정보가 있고 그것을 assign해주면 병합됨
console.log(newUser);
콘솔로 보면 병합되어있음
//Object.keys(); - 키를 배열로 반환
//Object.values(); - 값 배열로 반환
//Object.entries(); - 키와 값 배열로 반환
const user = {
name: "kay",
age: 30,
gender: "male",
};
// 키를 배열로 반환
const keys = Object.keys(user);
console.log(keys);
// 값 배열로 반환
const values = Object.values(user);
console.log(values);
// 키 / 값 배열 반환
const entries = Object.entries(user);
console.log(entries);
// 키와 값을 쌍으로 묶어서 배열로 내어줌
결과를 콘솔로 보면 전부 다른 것을 알수 있다!
Object.entries();의 반대 개념은
Object.fromEntries();
키와 값이 배열로 묶인 배열을 다시
const user = {
name: "kay",
age: 30,
gender: "male",
};
요론 형태로 내어줌
const arr = [
["name", "kay"],
["age", 30],
["gender", "male"],
];
// 키 / 값 배열을 객체로 Object.entries();의 반대
const fromEntries = Object.fromEntries(arr);
console.log(fromEntries);
콘솔로 보면
728x90
반응형
LIST
'코딩 메모장' 카테고리의 다른 글
StyledComponents로 리액트 스타일도 컴포넌트로 만들기 (0) | 2023.03.16 |
---|---|
[REACT 오류 해결] gh-page 배포 경로 오류 (4) | 2021.08.20 |
[REACT 메모] REACT Hook - useInput(1) (2) | 2021.08.15 |
[REACT 메모] .env로 githib에서 키 관리 (0) | 2021.08.14 |
[JAVASCRIPT 메모 ] 생성자 함수 (2) | 2021.08.12 |
댓글