2016-08-29 1 views
3

어떻게 ImmutableJS을 사용하면 입력 맵의 키/값 쌍을 통해 매핑하여 새 맵을 생성합니까? (값을이 사건은 하찮게 사각형 키와 큐브.)ImmutableJS를 사용하여지도에서 키 - 값을 매핑하여 다른지도를 만드는 방법은 무엇입니까?

scala> Map(1->2, 3->4).toSeq.map{case (k, v) => (k*k) -> (v*v*v)}.toMap 
res1: scala.collection.immutable.Map[Int,Int] = Map(1 -> 8, 9 -> 64) 

자바 스크립트에서

는, 내가 좋아하는 뭔가를 바라고 있어요 :

스칼라, 나는 같은 것을 할 것

Immutable.fromJS({1: 2, 3: 4}).map((v, k) => [k*k, v*v*v]).toJS() 
// { 1: 8, 9: 64 } 

(I는 ES6 via Babel을 사용하고 있습니다.)

내가이 ISN은 실현 잠재적 인 키 충돌 때문에 정의 된 결과를 생성 할 수 없습니다. 내 응용 프로그램에서 나는 다른 곳에서 이것을 방지하고있다.

차이점이 있다면 실제로 OrderedMap을 사용하고 있습니다.

+0

https://facebook.github.io/immutable-js/docs/#/Map/map – Ben

+1

안녕 Ben, map에 전달 된 함수는 새로운 값을 반환 할 것으로 예상됩니다. . 새로운 키/값 쌍을 생성 할 것으로 예상되는 무언가를 찾고 있는데, 그 이유는 둘 다 변경해야하기 때문입니다. –

+0

좋은 지적, 나는 명확하게 질문을 분명히하지 않았다. – Ben

답변

2

내가 찾고 있던 기능은 mapEntries입니다. 다음 예를

Immutable.fromJS({1: 2, 3: 4}).mapEntries(([k, v]) => [k*k, v*v*v]).toJS() 
// { 1: 8, 9: 64 } 

mapEntries 배열로 한 쌍의 키/값을 취하는 함수를 취하고, 다른 배열로 또한 새로운 키/값 쌍을 반환한다.

관련 문제