讲师中心 微信公众号
AI工具推荐 视频效率加速

现代JavaScript_Map与Set数据结构

胖墨酱_3627

胖墨酱_3627

发布时间:2025-11-23 19:03:16

|

820人浏览过

|

来源于php中文网

原创

Map和Set是JavaScript中高效的内置数据结构,Map支持任意类型键值对并保持插入顺序,适用于频繁增删的场景;Set自动去重,适合维护唯一值集合;相比普通对象,Map在性能、键类型和安全性上更优;WeakMap和WeakSet提供弱引用,避免内存泄漏,常用于私有数据或元数据管理。

现代javascript_map与set数据结构

在现代JavaScript中,Map 和 Set 是两种非常实用的内置数据结构,它们弥补了传统对象和数组在某些场景下的不足。相比使用普通对象模拟键值对或去重数组,Map 和 Set 提供了更清晰、高效且语义明确的解决方案。

Map:灵活的键值对集合

Map 是一个存储键值对的集合,与普通对象最大的不同在于它允许任何类型的值作为键——包括对象、函数、原始类型等。

常见操作包括:

  • new Map():创建一个新的Map实例
  • map.set(key, value):添加或更新键值对
  • map.get(key):获取指定键的值
  • map.has(key):判断是否包含某个键
  • map.delete(key):删除指定键值对
  • map.size:获取键值对数量
  • map.clear():清空所有内容

示例:

立即学习“Java免费学习笔记(深入)”;

const user = { name: 'Alice' };
const map = new Map();
map.set(user, 25);
console.log(map.get(user)); // 25

Map 也支持遍历,使用 forEach 或 for...of 循环:

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

Set:自动去重的值集合

Set 是一种存储唯一值的集合,重复添加相同值时不会生效。它非常适合用于数组去重或维护一组不重复的数据。

基本用法包括:

Java Api Extractor
Java Api Extractor

从 Java 项目中提取 Controller 层接口定义为 JSON 数据。

下载
  • new Set():创建Set实例,可传入可迭代对象(如数组)进行初始化
  • set.add(value):添加值
  • set.has(value):检查是否存在
  • set.delete(value):删除值
  • set.size:获取元素个数
  • set.clear():清空集合

例如,快速去除数组中的重复项:

const arr = [1, 2, 2, 3, 4, 4];
const unique = [...new Set(arr)];
console.log(unique); // [1, 2, 3, 4]

Set 同样支持遍历,方式与 Map 类似:

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

Map 与普通对象的对比

虽然对象也能存储键值对,但 Map 在以下方面更具优势:

  • 键不限于字符串或Symbol,可以是任意类型
  • 性能更好,尤其在频繁增删键值对时
  • 保持插入顺序
  • 直接获取大小(size),无需手动计算
  • 避免原型链污染问题

而对象更适合静态配置或需要序列化的场景(如JSON.stringify)。

WeakMap 与 WeakSet:弱引用版本

JavaScript 还提供了 WeakMap 和 WeakSet,它们只持有对键的“弱引用”,不会阻止垃圾回收。

特点包括:

  • 键必须是对象
  • 不能遍历,没有 size 属性
  • 适合用于关联元数据而不影响内存回收

例如,用 WeakMap 存储私有数据:

const privates = new WeakMap();
class Person {
  constructor(name) {
    privates.set(this, { name });
  }
  getName() {
    return privates.get(this).name;
  }
}

基本上就这些。Map 和 Set 让JavaScript在处理集合数据时更加高效和直观,合理使用能提升代码质量与性能。

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

花生AI
花生AI Hot

一款AI视频创作工具,主要用于B站推出的AI视频创作工具,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2255

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

3642

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

1216

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

4199

2025.09.10

php中foreach用法
php中foreach用法

本专题整合了php中foreach用法的相关介绍,阅读专题下面的文章了解更多详细教程。

818

2025.12.04

c语言const用法
c语言const用法

const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

2378

2023.09.20

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

1858

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

3004

2023.09.04

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

0

2026.11.05

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
DBeaver AI数据隐私指南
DBeaver AI数据隐私指南

共0课时 | 0人学习

DBeaver ER关系图使用手册
DBeaver ER关系图使用手册

共0课时 | 0人学习

XORM框架官方中文文档
XORM框架官方中文文档

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn