JavaScript中new Map()和new Set()的详细使用与区别解析

浏览:1002 时间:2025-09-18

JavaScript中new Map()和new Set()的详细使用与区别解析

1. new Map()的使用

Map是JavaScript ES6引入的一种键值对集合数据结构,允许使用任何数据类型作为键(包括对象和原始值)。

1.1 创建Map

const map = new Map();
map.set('name', 'John');
map.set(1, 'number one');
map.set({}, 'object key');

1.2 常用方法

  • set(key, value): 添加键值对
  • get(key): 获取对应键的值
  • has(key): 检查键是否存在
  • delete(key): 删除键值对
  • clear(): 清空所有键值对
  • size: 获取元素数量

1.3 遍历Map

map.forEach((value, key) => {
  console.log(key, value);
});

for (let [key, value] of map) {
  console.log(key, value);
}

2. new Set()的使用

Set是存储唯一值的集合,自动去重,不允许重复值。

2.1 创建Set

const set = new Set();
set.add(1);
set.add(2);
set.add(1); // 重复值不会被添加

2.2 常用方法

  • add(value): 添加值
  • has(value): 检查值是否存在
  • delete(value): 删除值
  • clear(): 清空所有值
  • size: 获取元素数量

2.3 遍历Set

set.forEach(value => {
  console.log(value);
});

for (let value of set) {
  console.log(value);
}

3. Map和Set的主要区别

特性 Map Set
数据结构 键值对集合 唯一值集合
存储方式 key-value pairs values only
重复处理 键唯一,值可重复 值唯一,自动去重
主要用途 需要键值映射的场景 需要存储唯一值的场景
初始化 new Map([[key1, value1], [key2, value2]]) new Set([value1, value2, value3])

4. 使用场景举例

4.1 Map的使用场景

  • 需要键不是字符串的情况
  • 需要维护键值对映射关系
  • 需要频繁增删键值对的场景

4.2 Set的使用场景

  • 数组去重
  • 存储唯一标识符
  • 集合运算(并集、交集、差集)

5. 性能考虑

Map和Set在查找、添加、删除操作上的性能通常优于普通对象和数组,特别是在大数据量情况下表现更明显。

总结:Map适合键值对存储,Set适合唯一值存储,根据具体需求选择合适的数据结构能提高代码效率和可读性。

热门Tag 更多>

端口被占用如何解决 Checksum计算 JDK1.8安装 Java虚拟机内存不足 人工智能大模型 移动开发 Stream去重 LLVM编译工具链 清除DNS缓存 定时任务配置 REQ-REP Python地理信息 文件对比工具破解 Python formatdate Unity进阶教程 漫画管理工具 .NET Framework 电商运营技巧 开源模型 AMP系统通信 API跨域请求 @SpringBootApplication MySQL只读权限 ScriptX 消息队列开发 JS逻辑运算符 MySQL MINUS用法 ES6占位符 删除文件 陀螺仪数据处理 免费直播软件 Linux磁盘IO 系统日志分析 I-MR图 VP9下载 vsftp使用教程 JDK环境变量设置 集合并集 图例长条 Python include UPDATE多表关联 HostKey验证 Python Quartz ECharts提示框 邮件系统搭建 隐写术 sysdate 数据恢复软件 容器状态异常 MySQL表结构修改 告警配置 OVF软件包下载失败 jQuery消息框 传奇服务器 IDEA切换分支 Python推导式 计算机技术演进 AO3镜像 Python文件打包 C盘太大 CORS 人脸检测模型 Layui表单事件 条件聚合函数 视频播放插件 C# 编写 NTFS结构 mysql_install_db替代方案 Word2Vec VS2017教程 非线性规划求解器 IT技能 GBRT算法 MySQL图形界面 Fiddler证书安装 原型制作 细胞成像 Unity相机属性 302跳转 tracepath用法 Double.parseDouble 安卓调试工具 ESXi 6.5部署 数据库中文查询 ChromeDriver官方 WebDriver下载 vSphere 高斯分布 免费视频网站 在线客服解决方案 PL/SQL永久激活 VMware12密钥 Mac Terminal memset函数 MongoDB性能优化 国情民情 JAVA链表 Android下载应用 工程索引期刊 wx.switchTab 蔡徐坤 宝塔使用教程 dracut错误 特殊符号 ResNet原理 Win10安装VC++6.0 PbootCMS优化 %u IDEA中文乱码 元素宽度 WPS技巧 Jenkins下载 SRS GB28181 Python科学计算库 HTML特殊字符转义 软考考试安排 Linux系统维护 command line tool 韦根协议 Bash参数处理 块级元素与行内元素 AF_UNIX SQL乘法运算 上下文管理器 QT5第一个程序 CSS八卦 status_access_denied 交换机原理 layui下拉框联动 VCRUNTIME140.dll修复 C语言静态函数 时间同步 AUC曲线 cmd防火墙命令 老司机网站 大数据检索 一小时执行一次 Linux安装SVN SATA硬盘 数据湖 Maven插件安装 SQL文件 CSDN打不开 STM32CubeMX教程 视图索引 webpack转译 StatefulSet控制器 null值 TDOP Delphi Zlib
 X
QQ在线咨询
售前咨询
19943336265
售前客服
微信客服