2017-04-12 67 views
0

我对使用Immutable.js的React比较陌生。 比方说,我有一个30个项目的(有序)地图,其中一些有绿色和一些红色。 现在我想把这个地图分成两个地图,一个包含前五个绿色物品,另一个包含其余的(绿色物品和红色物品的其余部分)。如何根据条件将地图拆分为两张地图

如果我有一个数组,我只需定义两个结果数组,遍历我的src数组并将这些项放入它们的相应结果数组中。如果我使用immutable.js来做到这一点,那么每次改变时都需要创建一个新的Map。这仍然是要走的路,还是有更快/更优雅的方式来实现这一目标?

在此先感谢!

回答

0

如果我有问题的权利,最优雅的方式是使用Map.filter

const { Map } = Immutable; 
 
const sourceMap = new Map({ 
 
    key1: { color: "red" }, 
 
    key2: { color: "green" }, 
 
}); 
 
const filterMap = c => sourceMap.filter(({ color }) => color === c); 
 
const greenMap = filterMap("green"); 
 
const redMap = filterMap("red");
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.1/immutable.min.js"></script>