Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 객체를 다른 객체로 업데이트하는 방법 – 기존 키만 안전하게 갱신하기

JavaScript에서 한 객체를 다른 객체의 값으로 업데이트하되, 원본 객체에 이미 존재하는 키만 갱신하고 싶은 경우가 있습니다. 이럴 때는 hasOwnProperty() 메서드를 활용하면 됩니다.

핵심 개념

hasOwnProperty()는 객체가 특정 키를 직접 소유하고 있는지 확인하는 메서드입니다. 이를 활용하면 병합 대상 객체에 해당 키가 있을 때만 값을 교체하고, 없는 키는 무시하여 원본 객체의 구조를 그대로 유지할 수 있습니다.

예제 코드

var markDetails1 = {
  'marks1': 78,
  'marks2': 65
};
var markDetails2 = {
  'marks2': 89,
  'marks3': 90
}

function updateJavaScriptObject(details1, details2) {
  const outputObject = {};
  Object.keys(details1)
    .forEach(obj => outputObject[obj] =
      (details2.hasOwnProperty(obj) ? details2[obj] : details1[obj]));
  return outputObject;
}

console.log(updateJavaScriptObject(markDetails1, markDetails2));

코드 설명

위 코드의 동작 방식을 단계별로 살펴보겠습니다.

Object.keys(details1)를 통해 첫 번째 객체(markDetails1)의 모든 키를 가져옵니다. 그런 다음 forEach()로 각 키를 순회하면서, 두 번째 객체(markDetails2)에 같은 키가 존재하는지 hasOwnProperty()로 확인합니다.

키가 존재하면 두 번째 객체의 값(89)으로 덮어쓰고, 존재하지 않으면 첫 번째 객체의 기존 값(78)을 그대로 사용합니다. 주목할 점은 markDetails2에만 있는 marks3 키는 결과 객체에 포함되지 않는다는 것입니다.

실행 방법

위 프로그램을 실행하려면 Node.js 환경에서 다음 명령어를 사용합니다.

node fileName.js

여기서는 파일 이름이 demo140.js라고 가정합니다.

실행 결과

프로그램을 실행하면 아래와 같은 출력을 확인할 수 있습니다.

PS C:\Users\Amit\JavaScript-code> node demo140.js
{ marks1: 78, marks2: 89 }

정리

이 방식의 가장 큰 장점은 새로운 키가 추가되지 않는다는 것입니다. 일반적인 전개 연산자(spread operator)나 Object.assign()을 사용한 병합과 달리, 원본 객체의 키 구조가 변경되지 않으므로 데이터 형태를 엄격하게 유지해야 하는 상황에서 특히 유용합니다.