当前位置:首页 > JavaScript

map实现js

2026-02-01 00:09:41JavaScript

Map 实现(JavaScript)

在 JavaScript 中,Map 是一种键值对集合,允许任何类型的值(包括对象)作为键,并保留插入顺序。以下是 Map 的基本实现方法及常见操作。

创建 Map

使用 new Map() 构造函数创建一个空 Map,或通过传入一个可迭代对象(如数组)初始化 Map

const map1 = new Map(); // 空 Map
const map2 = new Map([
  ['key1', 'value1'],
  ['key2', 'value2']
]); // 初始化 Map

添加键值对

使用 set(key, value) 方法向 Map 中添加键值对。

map1.set('name', 'Alice');
map1.set(42, 'Answer');
map1.set({ id: 1 }, 'Object Key');

获取值

通过 get(key) 方法根据键获取对应的值。若键不存在,返回 undefined

map实现js

console.log(map1.get('name')); // 输出: 'Alice'
console.log(map1.get(42)); // 输出: 'Answer'

检查键是否存在

使用 has(key) 方法检查 Map 中是否包含指定键。

console.log(map1.has('name')); // 输出: true
console.log(map1.has('unknown')); // 输出: false

删除键值对

通过 delete(key) 方法删除指定键的键值对。返回 true 表示删除成功,false 表示键不存在。

map实现js

map1.delete('name'); // 返回 true
map1.delete('unknown'); // 返回 false

清空 Map

使用 clear() 方法移除所有键值对。

map1.clear(); // Map 变为空

获取 Map 大小

通过 size 属性获取 Map 中键值对的数量。

console.log(map2.size); // 输出: 2

遍历 Map

Map 支持多种遍历方式:

  • keys():返回键的迭代器。
  • values():返回值的迭代器。
  • entries():返回键值对的迭代器(默认迭代行为)。
  • forEach(callback):遍历键值对并执行回调函数。
// 使用 for...of 遍历
for (const [key, value] of map2) {
  console.log(key, value);
}

// 使用 forEach
map2.forEach((value, key) => {
  console.log(key, value);
});

与 Object 的区别

  1. 键的类型Map 的键可以是任意类型(包括对象),而 Object 的键只能是字符串或 Symbol。
  2. 顺序Map 保留插入顺序,Object 的键顺序不固定。
  3. 性能:频繁增删键值对时,Map 性能更优。
  4. 大小Map 直接通过 size 获取,Object 需手动计算。

示例代码

const userMap = new Map();
userMap.set(1, { name: 'Alice', age: 25 });
userMap.set(2, { name: 'Bob', age: 30 });

console.log(userMap.get(1)); // { name: 'Alice', age: 25 }
console.log(userMap.size); // 2

userMap.forEach((user, id) => {
  console.log(`User ${id}: ${user.name}`);
});

通过 Map 可以高效管理键值对数据,尤其适合需要复杂键或频繁操作的场景。

标签: mapjs
分享给朋友:

相关文章

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

节流js实现

节流js实现

节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否执…

js实现视口

js实现视口

js实现视口检测的方法 使用JavaScript检测元素是否进入视口(viewport)可以通过Intersection Observer API或手动计算元素位置实现。以下是两种常见方法: Int…