【问题标题】:How to split Map into two maps based on a condition如何根据条件将地图拆分为两个地图
【发布时间】:2017-04-12 15:08:16
【问题描述】:

我对使用 Immutable.js 的 React 比较陌生。 假设我有一个包含 30 个项目的(有序)地图,其中一些是绿色的,一些是红色的。 现在我想将此地图拆分为两个地图,一个包含前五个绿色项目,另一个包含其余部分(其余的绿色项目和红色项目)。

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

提前致谢!

【问题讨论】:

    标签: immutable.js


    【解决方案1】:

    如果我的问题是正确的,最优雅的方法是使用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>

    【讨论】:

    • 迭代两次感觉不好:(
    猜你喜欢
    • 1970-01-01
    • 2016-07-26
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    • 2023-01-09
    相关资源
    最近更新 更多