微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何按顺序遍历 ES6 Map?

如何解决如何按顺序遍历 ES6 Map?

ES6 映射的认迭代顺序是插入顺序。你如何以数字/字典顺序遍历它?

解决方法

不幸的是,Javascript 中没有像更好的语言(例如 C++ 的 std::map,或 Rust 的 BTreeMap)那样的有序映射。有像 btree-typescript 这样的第三方(基准部分列出了一些其他实现)。

因此您可以使用按顺序存储的地图。如果您使用的是 ES6 Map,您要么必须按顺序插入值并且永远不要更改它们,要么必须将所有键收集到一个数组中,然后对它们进行排序。如果你在做一次,它实际上比使用 BTreeMap 更快(无论如何,在 Rust 中,我认为在 Javascript 中也是如此)。但通常情况下最好使用 B 树映射。

function sortedNumberKeys<V>(map: Map<number,V>): number[] {
  return [...map.keys()].sort((a,b) => a - b);
}

function sortedStringKeys<V>(map: Map<string,V>): string[] {
  return [...map.keys()].sort();
}

const m: Map<string,number> = new Map();

for (const key of sortedStringKeys(m)) {
  const val = m.get(key);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。