【问题标题】:How to get a last element of ES6 Map without iterations?如何在没有迭代的情况下获得 ES6 Map 的最后一个元素?
【发布时间】:2015-06-18 16:50:11
【问题描述】:

如何在没有迭代(forEach 或 for of)的情况下通过容器的全长获取 ES6 Map/Set 的最后一个元素?

【问题讨论】:

    标签: containers ecmascript-6


    【解决方案1】:

    地图是可迭代和有序的,但它们不是数组,因此它们没有任何索引访问。迭代到最终元素是您能做的最好的事情。最简单的情况是

     Array.from(map.values()).pop();
    

    【讨论】:

    • 这个问题不需要迭代,在我看来,这是出于性能问题。如果是这样的话,这个答案并不比手动迭代更好,因为从迭代器中创建一个数组就是在幕后做的。也就是说,这可能是更简洁的方法。
    【解决方案2】:
    const getLastItemInMap = (map) => [...map][map.size-1];
    const getLastKeyInMap = (map) => [...map][map.size-1][0];
    const getLastValueInMap = (map) => [...map][map.size-1][1];
    

    【讨论】:

    • 您应该在答案中添加 cmets 或描述,因为其他人阅读它可能不清楚。
    • 虽然有用,但所有这些方法都需要迭代。 [...map] 通过...迭代将地图转换为数组。因此,如果性能是一个问题,那么您不会以这种方式保存任何东西。我认为 loganfsmyth 是正确的:尝试通过(插入)“索引”检索项目时,至少迭代一次是最好的方法
    • 我使用了这个,它显然是资源密集的一点:let lastKeyInMap = Array.from(this.myMap.keys()).pop();。另请参阅:gist.github.com/tizmagik/19ba6516064a046a37aff57c7c65c9cd
    猜你喜欢
    • 2020-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多