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

JavaScript中Set与Map性能对比:存储、查询、删除谁更快?

Set 与 Map:存储、查询、删除操作的性能对比

Set 和 Map 均为 ES6 新增的数据类型,在部分场景下可互相替代。例如存储唯一元素时,既可以使用 Set,也可以使用 Map 并将值设为 true,示例代码如下:

const data: string[];
const set = new Set();
const map = new Map<string, boolean>();

data.forEach((item) => {
    map.set(item, true);
});

data.forEach((item) => {
    set.add(item);
});

两种方式均可实现需求,但二者在存储、查询、删除三类核心操作中的性能表现存在细微差异:

1. 存储操作(Set.add vs Map.set)

Set 的 add 操作通常比 Map 的 set 略快。原因是 Set 仅需存储元素本身,而 Map 要同时维护键和对应的关联值(哪怕只是固定的 true),多了一步值的绑定逻辑。这种差异在小数据量下几乎不可感知,但处理十万级以上的大量数据时,Set 的存储效率优势会显现。

2. 查询操作(Set.has vs Map.has)

两者底层均基于哈希表实现,平均时间复杂度均为 O(1)。但实际测试中,Set 的 has 会略微更快:Set 直接查找元素本身,而 Map 的 has 是查找键,虽逻辑相似,但多了一层键值映射的间接处理。不过这个性能差极小,绝大多数业务场景下可忽略。

3. 删除操作(Set.delete vs Map.delete)

与查询逻辑一致,两者平均时间复杂度均为 O(1),但 Set 的 delete 操作略快。因为 Set 删除的是元素本身,而 Map 需要先定位目标键,再删除对应的键值对,操作步骤稍多。同样,仅在处理超大量数据时,该差异才会被感知。

实用建议

这些性能差异属于微观层面,若业务数据量不大,优先考虑语义性:存储唯一元素直接用 Set 更贴合场景,代码更简洁,无需用 Map 模拟。只有在处理十万级以上海量数据且对性能极致敏感时,才需要优先选择 Set。

内容的提问来源于stack exchange,提问作者Ujjwal Kumar Gupta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 18:48:23