본문 바로가기
개발/JavaScript

자바스크립트 - 객체에 존재하는 속성만 덮어쓰기

by 피로물든딸기 2023. 9. 2.
반응형

자바스크립트 전체 링크

 

객체 obj1, obj2가 있다.

let obj1 = {
  a: "a1",
  b: "b1",
  c: "c1",
  d: "d1",
  e: "e1",
  f: "f1",
  g: "g1",
};

let obj2 = {
  a: "a2",
  b: "b2",
  g: "g2",
  h: "h2",
};

 

obj2의 값을 obj1으로 복사할 때, obj2의 속성이 obj1에 존재하는 경우만 복사하자.

.

hasOwnProperty를 이용하면 간단하다.

for (let key in obj1) {
  if (obj2.hasOwnProperty(key)) {
    obj1[key] = obj2[key];
  }
}

 

전체 코드는 다음과 같다.

let obj1 = {
  a: "a1",
  b: "b1",
  c: "c1",
  d: "d1",
  e: "e1",
  f: "f1",
  g: "g1",
};

let obj2 = {
  a: "a2",
  b: "b2",
  g: "g2",
  h: "h2",
};

console.log("before : ", obj1, obj2);

for (let key in obj1) {
  if (obj2.hasOwnProperty(key)) {
    obj1[key] = obj2[key];
  }
}

console.log("after  : ", obj1, obj2);

 

obj1의 a, b, g 값이 obj2가 가지고 있던 값으로 변경되었다.

before :  { a: 'a1', b: 'b1', c: 'c1', d: 'd1', e: 'e1', f: 'f1', g: 'g1' } { a: 'a2', b: 'b2', g: 'g2', h: 'h2' }
after  :  { a: 'a2', b: 'b2', c: 'c1', d: 'd1', e: 'e1', f: 'f1', g: 'g2' } { a: 'a2', b: 'b2', g: 'g2', h: 'h2' }
반응형

댓글