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에 따라 라이센스가 부여됩니다.