Map 对象的基础知识介绍

引言

Map 对象是一种键值对存储的数据结构,它可以用于存储任意类型的值,并提供了快速的查找和迭代功能。Map 中的键可以是任意类型的值,包括字符串、数字、符号、对象等,而值也可以是任意类型的值,包括数字、字符串、布尔值、对象等。

Map 对象的出现极大地提高了前端处理数据的效率,今天我们来总结一下 Map 的一些基本方法。

get(key)

获取指定键对应的值,如果键不存在则返回 undefined。

javascript 复制代码
let map = new Map();
map.set('a', 1);
console.log(map.get('a')); // 1
console.log(map.get('b')); // undefined

set(key, value)

设置指定 key 对应的值,如果 key 已存在则会覆盖原有的值。

JavaScript 复制代码
let map = new Map();
map.set('a', 1);
const obj1 = {
    name: "obj"
};
const obj2 = {
    age: 99
};
map.set(obj1, obj2);
console.log(map.get('a')); // 1
console.log(map.get(obj1)); // {age: 99}
map.set('a', 2);
console.log(map.get('a')); // 2

delete(key)

删除指定键值对,删除成功则返回 true,如果键不存在则返回 false。

javascript 复制代码
let map = new Map();
map.set('a', 1);
console.log(map.delete('a')); // true
console.log(map.get('a')); // undefined
map.delete('a'); // false

has(key)

判断指定 key 是否存在于 Map 中,如果存在则返回 true,否则返回 false。

javascript 复制代码
let map = new Map();
map.set('a', 1);
console.log(map.has('a')); // true
console.log(map.has('b')); // false

clear()

清空 Map 中所有的键值对。

javascript 复制代码
let map = new Map();
map.set('a', 1);
map.set('b', 2);
map.clear();
console.log(map.size); // 0

entries()

Map.entries() 返回 Map 中所有键值对的迭代器,其中包含了 Map 中所有的键值对。

可以使用 for...of 循环或者 reduce() 方法遍历 Map.entries() 返回的迭代器。

javascript 复制代码
let map = new Map();
map.set('a', 1);
map.set('b', 2);
map.set('c', 3);

const entries = map.entries();
console.log(entries); // MapIterator {'a' => 1, 'b' => 2, 'c' => 3}

for (const entry of entries) {
  console.log(entry[0] + ': ' + entry[1]);
}

// 输出:
// a: 1
// b: 2
// c: 3

keys()

Map.keys() 返回 Map 中所有键的迭代器。

javascript 复制代码
let map = new Map();
map.set('a', 1);
map.set('b', 2);
map.set('c', 3);

const keys = map.keys();
console.log(keys); // MapIterator {'a', 'b', 'c'}

for (const key of keys) {
  console.log(key);
}

// 输出:
// a
// b
// c

values()

Map.values() 返回 Map 中所有值的迭代器。

js 复制代码
let map = new Map();
map.set('a', 1);
map.set('b', 2);
map.set('c', 3);

const values = map.values();
console.log(values); // MapIterator {1, 2, 3}

for (const value of values) {
  console.log(value);
}

// 输出:
// 1
// 2
// 3

forEach(callbackFn, thisArg)

对 Map 中的键值对执行回调函数,并对每个键值对执行一次。

回调函数可以接受三个参数:

  • 当前键值对的值
  • 当前键值对的键
  • Map 本身
javascript 复制代码
let map = new Map();
map.set('a', 1);
map.set('b', 2);
map.set('c', 3);

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

// 输出:
// a: 1
// b: 2
// c: 3

size

获取 Map 中键值对的数量。

javascript 复制代码
let map = new Map();
map.set('a', 1);
map.set('b', 2);
map.set('c', 3);
console.log(map.size); // 3

Map 对象的遍历方法

Map 的遍历除了上面介绍的 forEach 方法,还有 for...of 方法。

javascript 复制代码
let map = new Map();
map.set('a', 1);
map.set('b', 2);
map.set('c', 3);

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

// 输出:
// a: 1
// b: 2
// c: 3

结束语

关于 Map 对象的一些基础知识就总结这么多,希望能够对大家有所帮助。

~

~ 全文完,感谢阅读!

~

相关推荐
清汤饺子7 小时前
OpenClaw 本地部署教程 - 从 0 到 1 跑通你的第一只龙虾
前端·javascript·vibecoding
颜酱7 小时前
图的数据结构:从「多叉树」到存储与遍历
javascript·后端·算法
爱吃的小肥羊9 小时前
比 Claude Code 便宜一半!Codex 国内部署使用教程,三种方法任选一!
前端
IT_陈寒11 小时前
SpringBoot项目启动慢?5个技巧让你的应用秒级响应!
前端·人工智能·后端
树上有只程序猿11 小时前
2026低代码选型指南,主流低代码开发平台排名出炉
前端·后端
橙某人11 小时前
LogicFlow 小地图性能优化:从「实时克隆」到「占位缩略块」!🚀
前端·javascript·vue.js
高端章鱼哥12 小时前
为什么说用OpenClaw对打工人来说“不划算”
前端·后端
大脸怪12 小时前
告别 F12!前端开发者必备:一键管理 localStorage / Cookie / SessionStorage 神器
前端·后端·浏览器
Mr_Mao12 小时前
我受够了混乱的 API 代码,所以我写了个框架
前端·api
小徐_233312 小时前
向日葵 x AI:把远程控制封装成 MCP,让 AI 替我远程控制设备
前端·人工智能