如何在没有迭代的情况下获得ES6 Map的最后一个元素?

Kir*_*tov 11 containers ecmascript-6

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

log*_*yth 21

映射是可迭代和有序的,但它们不是数组,因此它们没有任何索引访问.迭代到最后一个元素是你能做的最好的.最简单的情况是

 Array.from(map.values()).pop();
Run Code Online (Sandbox Code Playgroud)

  • 这个问题不需要迭代,在我看来,这是出于性能问题。如果是这样的话,这个答案并不比手动迭代更好,因为从迭代器创建数组只是在幕后完成的。也就是说,这可能是更简洁的方法。 (3认同)

Art*_*rev 6

const getLastItemInMap = (map) => [...map][map.size-1];
const getLastKeyInMap = (map) => [...map][map.size-1][0];
const getLastValueInMap = (map) => [...map][map.size-1][1];
Run Code Online (Sandbox Code Playgroud)

  • 您应该在您的答案中添加评论或描述,因为其他人阅读它时可能不清楚。 (6认同)