LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

说说 Map 和 Set 的区别及实际应用

zhenglin
2025年12月4日 9:14 本文热度 95

MapSet 是 JavaScript 中两种常用的数据结构,它们都是 ES6 引入的,相比于普通的对象(Object)和数组(Array),MapSet 提供了更多的灵活性和功能。


1. MapSet 的定义


Map:是一种键值对(key-value)的集合,类似于对象(Object),但是它的键(key)可以是任何类型的值,而不仅仅是字符串或符号。

特点:

  • 键值对数据结构。

  • 键(key)可以是任何类型(对象、数组、函数等)。

  • 保证元素按插入顺序排序。

  • 可以使用 .set(key, value) 设置键值对,使用 .get(key) 获取值。


Set
:是一个集合(set),其中每个元素都是唯一的。可以存储任何类型的值,但不允许重复的元素。

特点:

  • 值的集合(没有重复的值)。

  • 存储唯一值。

  • 保证元素按插入顺序排序。

  • 可以使用 .add(value) 添加元素,使用 .has(value) 检查是否包含元素。



2. MapSet 的区别


3. 实际应用场景

Map 的应用场景:

  • 存储键值对:如果需要将数据存储为一对一的关系,可以使用 Map

    • 示例:存储用户的 ID 和信息,或存储产品的 ID 和价格等。

map.set(1, 'apple');

map.set('name', 'John');

console.log(map.get(1)); // 'apple'

console.log(map.get('name')); // 'John'


 需要任意类型作为键:当需要将对象、数组、函数等作为键时,Map 比对象更有优势。

const objKey = { id: 1 };

const map = new Map();

map.set(objKey, 'User Info');

console.log(map.get(objKey)); // 'User Info'


维护插入顺序Map 保证键值对按插入顺序排序,适合需要按照插入顺序遍历的场景。

const map = new Map();

map.set(2, 'two');

map.set(1, 'one');

map.set(3, 'three');


for (let [key, value] of map) {

  console.log(key, value);

}

// 输出:

// 2 'two'

// 1 'one'

// 3 'three'


Set 的应用场景:

  • 存储唯一值:如果需要存储没有重复的值,可以使用 Set

    • 示例:去重数组中的元素。

console.log(set); // Set { 1, 2, 3, 4 }


检查元素是否存在Set 提供了 .has(value) 方法,可以高效地检查某个元素是否已经存在。

console.log(set.has(2)); // true

console.log(set.has(4)); // false


集合运算
Set 可以非常方便地做集合运算,例如交集、并集、差集等。通过 Set 和 Map 可以轻松实现一些数学集合操作。

// 并集

const setA = new Set([1, 2, 3]);

const setB = new Set([3, 4, 5]);

const union = new Set([...setA, ...setB]);

console.log(union); // Set { 1, 2, 3, 4, 5 }


快速查找:由于 Set 内部是基于哈希表实现的,因此它的查找效率高于普通的数组,尤其是在需要频繁查找某个值时。

console.log(set.has(3)); // true


4. 性能对比

  • Map 和 Set 都是基于哈希表实现的,插入、删除、查找的时间复杂度均为 O(1) ,因此在大多数情况下,它们的性能优于基于数组的操作(如 .indexOf())。

const arr = [1, 2, 3, 4, 5];

console.log(arr.indexOf(3)); // O(n)


const set = new Set([1, 2, 3, 4, 5]);

console.log(set.has(3)); // O(1)


总结:

  • Map 更适合用于需要键值对的场景(例如存储用户信息、配置项、缓存数据等),并且需要键为任意类型时。

  • Set 更适合用于存储唯一的值,尤其是去重、集合运算和高效查找的场景。


参考文章:原文链接


该文章在 2025/12/4 9:14:27 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved