2016-09-14 3 views
0

Immutable.js에서 Map과 Seq의 차이점은 무엇입니까? 이 둘의 차이점을 보여주는 예제를 제공해 주시겠습니까?immutable.js :지도 대 Seq

답변

1

변경할 수 없음의 Map은 쌍으로 이루어진 순서가 지정되지 않은 Iterable.Keyed입니다.

// create a Map() 
const map = Map({a: 1, b: 'Hello'}); 
// get a value for a specific key 
console.log(map.get('b')); 
> "Hello" 
// set a new value and assign it to a new Map() 
const newMap = map.set('c', 'This is a new key/value pair'); 
console.log(newMap.get('c')); 
> "This is a new key/value pair" 

는 방법 등 setIn(), deleteIn(), merge(), map() 등 다양한 액세스를 제공한다. 또한 다른 변경 불가능한 데이터 유형으로 변환 될 수 있습니다. the docs about all of these methods.

변경할 수 없음 Seq은 기본 데이터 구조를 필요로하지 않는 반복 가능한 값 시퀀스입니다. 이 Map에서 첫 번째 큰 차이 그리고 당신은 그 정의에서 볼 수 있습니다

class Map<K, V> extends Collection.Keyed<K, V>

동안 :에서

class Seq<K, V> extends Iterable<K, V>

오른쪽 얻을 - 가서 우리가 Seq하지 않는 것을 알 수 있습니다 주요 값은 키로, Map과 큰 차이가 있습니다. 또 다른 주요 차이점은 Seq 구조의 요소를 추가, 업데이트 또는 삭제할 수 없다는 점입니다.

In addition, to quote Lee Byron:

서열은 지연 동작 표현이다. 이전 Iterable의 매우 가벼운 컨테이너 및 적용 할 일부 조작 (맵, 필터 등)으로 생각할 수 있으며, 필요한 경우에만 조작이 적용됩니다. Seq는 값 자체를 저장하지 않습니다.

Seq은 가벼우므로 특정 로직 체인에서 성능이 다소 좋아질 수 있습니다. 또한 문서는 JavaScript 객체에 풍부한 컬렉션 API를 제공하는 데 자주 사용된다는 점에 유의하십시오.

+0

'Seq'에는 HAMT를 만드는 대신 기본 데이터 구조를 래핑하는 이점도 있습니다. HAMT는 돌연변이가 생길 때 (즉, 데이터를 공유 할 때) 공간을 절약하기에 좋지만 변경되지 않는 일부 데이터를 저장하려는 경우 성능이 떨어집니다. 따라서이 경우'Map '에'Seq'를 사용하십시오. – Carlo