如何根据条件将Map拆分为两个映射

时间:2017-04-12 15:08:17

标签: immutable.js

我使用Immutable.js对React相对较新。 假设我有一个包含30个项目的(有序)地图,其中一些颜色为绿色,一些颜色为红色。 现在我想把这个地图分成两个地图,一个包含前五个绿色项目,另一个包含其余的绿色项目(其余绿色项目和红色项目)。

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

提前致谢!

1 个答案:

答案 0 :(得分: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>
&#13;
&#13;
&#13;