【问题标题】:Fastest way to loop through Map keys循环遍历 Map 键的最快方法
【发布时间】:2021-11-07 17:54:11
【问题描述】:

假设我有一张带钥匙的地图:

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)

与之前的方法非常相似。

所以我想知道哪种方式性能最好。

【问题讨论】:

    标签: javascript performance loops dictionary key


    【解决方案1】:

    我用这些方法创建了一个JSBench。以下是从最快到最慢的结果:

    1. Map.prototype.forEach()
    2. Map.prototype.keys() 创建数组,然后Array.prototype.forEach()
    3. for of 循环通过 Map.prototype.keys()
    4. for of 循环通过 Map.prototype[Symbol.iterator]()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-03
      • 1970-01-01
      • 2021-11-18
      • 2019-12-10
      • 2011-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多