2016-08-29 18 views
3

如何使用ImmutableJS通过映射输入映射的键/值对来生成新映射?如何使用ImmutableJS映射地图上的键值以生成另一个地图?

在Scala中,我会做这样的事情:

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) 

(这种情况平凡正方形的关键和立方体的价值。)

在JavaScript中,我希望这样的事情:

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

(我使用ES6 via Babel

我意识到,这ISN由于潜在的关键冲突,我们不能保证产生明确的结果。在我的应用程序中,我在其他地方阻止了这个。

我实际上使用的是OrderedMap,如果这有所作为。

+0

有一个'map()'函数可用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需要一个函数,它接受一个键/值对作为数组,并且也应该返回新的键/值对作为另一个阵列。

相关问题