[javascript] Immutable.js에서 제공하는 데이터 병합 메소드에는 어떤 것들이 있나요?

Immutable.js는 JavaScript에서 불변성을 유지하기 위한 라이브러리입니다. Immutable.js에서 데이터 병합을 위해 제공하는 메소드는 다양합니다. 몇 가지 중요한 메소드들을 살펴보겠습니다.

  1. merge() 메소드: 이 메소드는 두 개의 Immutable.Map이나 Immutable.Record를 병합하는 데 사용됩니다. merge() 메소드는 첫 번째 매개변수로 병합 대상 Immutable 객체를 받고, 두 번째 매개변수로 병합할 Immutable 객체를 받습니다. 이 메소드를 호출하면 두 객체가 병합된 새로운 Immutable 객체를 반환합니다. 기존의 객체는 변경되지 않습니다.

예시 코드:

const { Map } = require('immutable');

const map1 = Map({ a: 1, b: 2 });
const map2 = Map({ b: 3, c: 4 });

const mergedMap = map1.merge(map2);
console.log(mergedMap.toJS()); // { a: 1, b: 3, c: 4 }
  1. mergeDeep() 메소드: 이 메소드는 merge()와 유사하지만 중첩된 Immutable.Map이나 Immutable.Record를 병합할 때 사용됩니다. mergeDeep() 메소드는 첫 번째 매개변수로 병합 대상 Immutable 객체를 받고, 두 번째 매개변수로 병합할 Immutable 객체를 받습니다. 이 메소드 또한 두 객체가 병합된 새로운 Immutable 객체를 반환하며, 기존의 객체는 변경되지 않습니다.

예시 코드:

const { Map } = require('immutable');

const map1 = Map({ a: 1, b: Map({ c: 2 }) });
const map2 = Map({ b: Map({ d: 3 }), e: 4 });

const mergedMap = map1.mergeDeep(map2);
console.log(mergedMap.toJS()); // { a: 1, b: { c: 2, d: 3 }, e: 4 }
  1. mergeWith() 메소드: 이 메소드는 merge()와 유사하지만 병합 시 특정 규칙을 적용하기 위해 사용됩니다. mergeWith() 메소드는 첫 번째 매개변수로 병합 대상 Immutable 객체를 받고, 두 번째 매개변수로 병합할 Immutable 객체를 받습니다. 세 번째 매개변수로는 사용자가 정의한 병합 규칙이 들어갑니다. 이 메소드는 두 객체가 병합된 새로운 Immutable 객체를 반환하며, 기존의 객체는 변경되지 않습니다.

예시 코드:

const { Map } = require('immutable');

const map1 = Map({ a: 1, b: 2 });
const map2 = Map({ b: 3, c: 4 });

const mergedMap = map1.mergeWith((oldVal, newVal) => oldVal + newVal, map2);
console.log(mergedMap.toJS()); // { a: 1, b: 5, c: 4 }

이외에도 Immutable.js는 mergeIn(), mergeDeepIn() 등의 다양한 메소드를 제공합니다. 이러한 메소드들을 사용하면 Immutable 데이터를 효과적으로 병합할 수 있습니다.

참고 자료: