You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript技术疑问:为何map.has远快于set.has与array.indexOf?

JavaScript 元素查找性能:Set.has vs Map.has vs Array.includes

我最近针对JavaScript中三种常见的元素查找方法做了性能基准测试,涵盖浏览器和Node.js两种环境,结果如下:

浏览器端测试结论

在浏览器环境下,Set.has()是查找集合元素的最高效方式。

Node.js环境测试结果(Node 9.4.0)

我用benchmarks.js复现了相同的测试场景,得到的具体性能数据如下(数值越高代表性能越好):

set.has x 6,454,428 ops/sec ±1.25% (90 runs sampled)
map.has x 64,519,657 ops/sec ±0.95% (86 runs sampled)
arr.includes x 11,415,721 ops/sec ±1.41% (87 runs sampled)

结果总结

  • Node环境中Map.has()的性能碾压另外两种方法,比Set.has()快了一个数量级
  • Array.includes()的表现处于中间位置
  • 浏览器和Node环境的性能表现存在明显差异,实际开发中需要结合运行环境和业务需求选择:
    • 若仅需存储唯一元素并做查找,优先考虑Set(浏览器端)或Map(Node端)
    • 数组的includes()更适合小规模数据场景,或者对性能要求不极致的情况

内容的提问来源于stack exchange,提问作者Eliran Pe'er

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:55:59