javascript - 循环遍历 Map 键的最快方法
问题描述
假设我有一张带有键的地图:
const map = new Map([['a', 'Apple'], ['b', 'Banana']])
我想遍历地图的键('a'
,'b'
)。
我知道这些循环键的方式:
Map.prototype.forEach()
map.forEach((_value, key) => {
console.log(key)
})
优点:简单
缺点:必须忽略函数中的第一个参数 -(_value, key) =>
而不仅仅是key =>
.
Map.prototype.keys()
从然后创建数组Array.prototype.forEach()
[...map.keys()].forEach(key => {
console.log(key)
})
优点:回调可以只是key =>
缺点:[...map.keys()]
。阅读代码时可能会令人困惑,并且性能可能会降低。
for of
依次通过Map.prototype[Symbol.iterator]()
for (const [key] of map) console.log(key)
优点:可能很快。易于阅读。
缺点:不是箭头函数(认为 forEach 更好)。
for of
依次通过Map.prototype.keys()
for (const key of map.keys()) console.log(key)
与之前的方法非常相似。
所以我想知道哪种方式性能最好。
解决方案
我用这些方法创建了一个JSBench。这些是从最快到最慢的结果:
Map.prototype.forEach()
Map.prototype.keys()
从然后创建数组Array.prototype.forEach()
for of
依次通过Map.prototype.keys()
for of
依次通过Map.prototype[Symbol.iterator]()
推荐阅读
- docker - 为什么服务名称更改后未在 docker-compose ps 中列出?
- android - 间歇性 FirebaseFirestoreException:PERMISSION_DENIED:缺少权限或权限不足
- html - line-height:导致行前和行后不被分割(用于良好的排版)
- node.js - mongoose,根据请求查找数据
- java - 未附加到报告的屏幕截图
- redux-observable - 如何检查匿名函数?
- python - 如何将 ndarray 转换为 GPU 格式的 autograd 变量?
- php - 从数组中提取变量并显示到视图中
- python - 如何调试光束 WriteToText 内存不足?
- excel - 当 2 列必须匹配时删除重复的 excel 行