2019-04-04 immutable.js에서merge,mergeWith와mergeDeep,mergeDeepWith의 차이
immutable.js
중 Map
대상은 개merge
와 mergeDeep
방법이 있다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 }
mergeWith
는 merge
보다 매개 변수가 하나 더 많아서 함수를 입력해야 한다. 합병할 대상이 같은 속성이 있을 때 이 함수를 호출하고 충돌하는 두 속성을 매개 변수로 삼아 함수를 전달한다.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 }
// }
mergeDeep
와 merge
는 유사하지만 두 대상이 같은 속성을 가지고 있을 때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
와 유사하다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.