javascript - Javascript 地图排序
问题描述
我最近在我的代码中有一个错误,这是由于我在查看 MDN 上的 Map 对象详细信息时缺少“按插入顺序”文本。简而言之,我有一个地图对象,可以说
let myMap = new Map;
然后,在填充它之后,我用一个简单的 for .. of语句迭代它的内容。像这样
for (let [key, val] of myMap) {
...
}
for循环中的代码取决于 (key, value) 对,按key排序。但是,填充地图的算法是以随机顺序执行的(我无法更改)。为了解决这个问题,我现在首先将所有可能的键添加到地图对象,如下所示:
let myMap = new Map;
for (let i=0; i<maxkey; ++i) myMap.set(key(i), undefined);
// And in the for loop
for (let [key, val] of myMap) {
if (typeof val === "undefined") continue;
//...
}
幸运的是,它们并不多(因此性能损失可以忽略不计),这很有效。这个解决方案对我来说仍然有点尴尬。
有更好的吗?
解决方案
映射中键的顺序取决于映射实现。具有自然排序键的映射通常称为树映射,因为键存储在树中。我没有在 JS 中使用树形图,所以我不能推荐一个特定的实现。
推荐阅读
- excel - 有没有办法将 Power BI 表导出到 excel 中?
- python - Numpy 数组到数据框如果使用所有标量值,则必须传递一个索引
- momentjs - 在本地构建时间,然后转换为另一个时区
- java - 如何在intellij上安装jboss fuse 6.3
- forms - 在 Javascript 中嵌套数学函数
- vuetify.js - 如何使 Vutify VMenu 右对齐?
- python - 更感知统一的颜色图?
- r - 仅当存在于另一个数据框中时才将行保留在数据框中
- google-chrome - 为什么我的 PushSubscriptions 过期这么快?
- c++ - 我必须从一个数组中选择两个元素,使得 lcm 最大