2019-04-04 immutable.js에서merge,mergeWith와mergeDeep,mergeDeepWith의 차이

2203 단어
immutable.jsMap 대상은 개mergemergeDeep 방법이 있다

merge


매개 변수는 immutable 또는 js 일 수 있다. js 라면 매개 변수는 얕은 층immutable 데이터로 변환될 뿐이고 깊은 층의 대상은 js 대상일 뿐이다.
      const map = new Map({ key1: 'value' });
      const a = { key2: { x: 1 } };
      const b = map.merge(a);

위의 예와 같이b.get('key2') 얻은 것은 하나JS 이다.직접 사용.x으로 획득1.get('x')

mergeWith

const one = Map({ a: 10, b: 20, c: 30 })
const two = Map({ b: 40, a: 50, d: 60 })
one.mergeWith((oldVal, newVal) => oldVal / newVal, two)
// { "a": 0.2, "b": 0.5, "c": 30, "d": 60 }
two.mergeWith((oldVal, newVal) => oldVal / newVal, one)
// { "b": 2, "a": 5, "d": 60, "c": 30 }
mergeWithmerge보다 매개 변수가 하나 더 많아서 함수를 입력해야 한다. 합병할 대상이 같은 속성이 있을 때 이 함수를 호출하고 충돌하는 두 속성을 매개 변수로 삼아 함수를 전달한다.

mergeDeep

const { Map } = require('immutable')
const one = Map({ a: Map({ x: 10, y: 10 }), b: Map({ x: 20, y: 50 }) })
const two = Map({ a: Map({ x: 2 }), b: Map({ y: 5 }), c: Map({ z: 3 }) })
one.mergeDeep(two)
// Map {
//   "a": Map { "x": 2, "y": 10 },
//   "b": Map { "x": 20, "y": 5 },
//   "c": Map { "z": 3 }
// }
mergeDeepmerge는 유사하지만 두 대상이 같은 속성을 가지고 있을 때merge는 간단한 얕은 교체일 뿐이고mergeDeep는 심층적인 교체(끼워 넣은 속성을 두루 훑어본다)

mergeDeepWith

const { Map } = require('immutable')
const one = Map({ a: Map({ x: 10, y: 10 }), b: Map({ x: 20, y: 50 }) })
const two = Map({ a: Map({ x: 2 }), b: Map({ y: 5 }), c: Map({ z: 3 }) })
one.mergeDeepWith((oldVal, newVal) => oldVal / newVal, two)
// Map {
//   "a": Map { "x": 5, "y": 10 },
//   "b": Map { "x": 20, "y": 10 },
//   "c": Map { "z": 3 }
// }
mergeWith와 유사하다.

좋은 웹페이지 즐겨찾기