当前位置: 首页 > wzjs >正文

商丘网站制作报价信赖赛憬科技微信公众号功能模块

商丘网站制作报价信赖赛憬科技,微信公众号功能模块,160加工网,长春网站建设托管JS的Map 前言一、Map二、基本使用1. 创建Map2. 添加/修改元素3. 获取元素4. 检查元素5. 删除元素6. 清空Map7. Map的大小 三、扩展使用1. 遍历 Map2. Map与其它数据结构的转换3. Map的应用场景(含 Map的 *特性* )4. 性能比较(与Object相比较&…

JS的Map

  • 前言
  • 一、Map
  • 二、基本使用
    • 1. 创建Map
    • 2. 添加/修改元素
    • 3. 获取元素
    • 4. 检查元素
    • 5. 删除元素
    • 6. 清空Map
    • 7. Map的大小
  • 三、扩展使用
    • 1. 遍历 Map
    • 2. Map与其它数据结构的转换
    • 3. Map的应用场景(含 Map的 *特性* )
    • 4. 性能比较(与Object相比较)
    • 5. 注意事项!!!
    • 6. WeakMap
  • 四、总结


前言

JS里对于Map的简单介绍
Map 是一种用于存储键值对的数据结构(与传统对象(Object)类似)


一、Map

Map 是一种用于存储键值对的数据结构。它的主要特性包括:

  1. 键值对存储:Map 存储的是一组键值对(key-value pairs)。每个键都是唯一的,与传统对象(Object)类似,但 Map 允许使用任何类型的值作为键,包括对象、函数、甚至是另一个 Map。

  2. 保持插入顺序:Map 会按照键值对的插入顺序维护遍历的顺序。当你使用 forEach 或其他遍历方法时,键值对会按照插入的顺序返回。

  3. 可变大小:Map 可以动态添加或删除键值对,可以使用 size 属性来获取当前键值对的数量。

  4. 更好的性能:在频繁的插入、删除和查找操作时,Map 的性能通常优于普通的对象,特别是在处理大量数据时。

二、基本使用

1. 创建Map

可以通过 new Map() 来创建一个新的Map

// 创建空Map
const map1 = new Map();// 用数组初始化Map
const map2 = new Map([['name', 'Alice'],['age', 25]
]);// 使用对象作为键
const objKey = {id: 1};
const map3 = new Map();
map3.set(objKey, 'value for object');
console.log(map3); // Map(1) { { id: 1 } => 'value for object' }

2. 添加/修改元素

使用 set() 方法向Map中添加元素

map.set(key, value);  // 返回Map对象本身,支持链式调用

3. 获取元素

使用 get()方法获取Map中的元素

map.get(key);  // 返回与键关联的值,不存在则返回undefined

4. 检查元素

可以使用 has() 方法检查Map中是否包含特定元素

map.has(key);  // 返回布尔值,表示键是否存在

5. 删除元素

使用 delete() 方法从Map中删除键值对

mySet.delete(key); // 删除成功返回true,否则返回false

6. 清空Map

使用 clear() 方法可以移除集合中的所有元素

mySet.clear();
console.log(mySet); // Set {}

7. Map的大小

使用 size 属性可以获取Map中键值对的数量

const myMap = new Map([['name', 'Alice'],['age', 25]
]);
console.log(myMap .size); // 2

三、扩展使用

1. 遍历 Map

Map 提供了多种方法来遍历键值对:

  1. keys(): 返回一个包含 Map 中所有键的迭代器。
  2. values(): 返回一个包含 Map 中所有值的迭代器。
  3. entries(): 返回一个包含 Map 中所有 [key, value] 对的迭代器。

可以用 forEach 方法遍历 Map:

myMap.forEach((value, key) => {console.log(`${key}: ${value}`);
});

keys() / values() / entries():

// 遍历键
for (const key of map.keys()) {}// 遍历值
for (const value of map.values()) {}// 遍历键值对
for (const [key, value] of map.entries()) {}

直接使用for…of

for (const [key, value] of map) {}

2. Map与其它数据结构的转换

  1. Map转数组
const arr = [...map];  // 或 Array.from(map)
  1. 数组转Map
const map = new Map( [['a', 1], ['b', 2]] )
  1. Map转对象
const obj = {};
for (const [key, value] of map) {obj[key] = value
}
  1. 对象转Map
const map = new Map(Object.entries(obj))

3. Map的应用场景(含 Map的 特性

  1. !!!需要使用任意类型的键时(这也是Map的特性):当键需要是对象、函数等复杂类型时

  2. !!!频繁增删键值对:Map在增删操作上性能优于Object

  3. !!!需要保持插入顺序:如实现LRU缓存

  4. 避免原型链污染:安全存储用户提供的键值

  5. 大数据量存储:Map比Object占用更少内存

4. 性能比较(与Object相比较)

优:创建:Object比Map更快,内存占用更少
优:插入:Map比Object快,内存占用少约78%
优:删除:Map略快于Object

劣:查询:两者性能相近,Object略快
劣:在键为连续非负整数时,Object性能会显著优于Map

5. 注意事项!!!

  1. 键的相等性:Map使用"SameValueZero"算法比较键,NaN与NaN视为相等

  2. !!!不要使用属性访问:map[‘key’] = value这种方式不会修改Map数据结构

  3. JSON序列化:Map默认不支持JSON序列化,需要自定义转换

6. WeakMap

WeakMap是Map的弱引用版本,区别在于:

  • 键必须是对象
  • 键是弱引用,不会阻止垃圾回收
  • 不可遍历,没有size属性
  • 只有get、set、has、delete方法
const wm = new WeakMap();
const obj = {};
wm.set(obj, 'value');

四、总结

Map是JavaScript中强大的数据结构,在需要键值对存储且Object不能满足需求时,Map是更好的选择。


文章转载自:

http://3A3ZWbuF.xxwfq.cn
http://9EIZ7DrQ.xxwfq.cn
http://P9T4geaG.xxwfq.cn
http://XMpIOmOz.xxwfq.cn
http://fHuwQFHe.xxwfq.cn
http://CrCZSnim.xxwfq.cn
http://bY2rsmDS.xxwfq.cn
http://Me1sSD62.xxwfq.cn
http://VnkBZtfa.xxwfq.cn
http://EjrRp75X.xxwfq.cn
http://bY1IlYlc.xxwfq.cn
http://Qcr5hbcX.xxwfq.cn
http://7dquet8q.xxwfq.cn
http://Q5TJj1TA.xxwfq.cn
http://mrlPH9rg.xxwfq.cn
http://i3IqlpyF.xxwfq.cn
http://YOlLvYhR.xxwfq.cn
http://8Ez5EKc6.xxwfq.cn
http://LL34mSjK.xxwfq.cn
http://xGCOu4rO.xxwfq.cn
http://jvVtI8Ep.xxwfq.cn
http://V8oEn8JQ.xxwfq.cn
http://v5OO5a9z.xxwfq.cn
http://sr3UaB2l.xxwfq.cn
http://ySbvYrq4.xxwfq.cn
http://H9PSah0u.xxwfq.cn
http://qiQCDwuB.xxwfq.cn
http://JQX11YvQ.xxwfq.cn
http://0Ikqz36V.xxwfq.cn
http://QGq4IHDS.xxwfq.cn
http://www.dtcms.com/wzjs/773408.html

相关文章:

  • 有哪些图片设计网站有哪些问题礼品公司网站模板
  • 建筑企业招聘网站米拓网站建设步骤
  • 佛山网站定制开发怎么在自己做的网站上发视频
  • 黑河做网站公司成都二次感染最新消息
  • 郴州网站优化公司影视制作宣传片公司
  • 太原网站建设的公司排名银川网站建设推广
  • 东莞做网站费用wordpress注入工具
  • 黑龙江网站建设企业h5免费制作平台火蚁邀请函怎么写
  • 企业网站开发协议中小企业网站建设报告
  • 域名注册是什么意思呢北京专业seo
  • 网页制作作业下载中国seo谁最厉害
  • 装修网站模板寮步网页设计
  • 用jsp做婚纱网站的流程网站建设制作模板
  • 滨州网站建设哪家专业厦门微网站建设
  • 网站制作成本包含怎样查网站有没有做CDN加速
  • 网站管理系统后台不能发布文章了网络公关事件
  • 广东省网站免备案表制作网站哪家专业
  • 政务网站建设总结上高做网站公司
  • 网站开发维护运维云指建站平台
  • 哪个公司做公司网站好网站建设实践
  • 龙华网页设计公司网站深圳兼职做网站
  • WordPress网址导航主题HAOWA青岛网站优化排名
  • 快速建站公司怎么样网页设计入门基础知识
  • 济南网站seo优化河南网站建站系统哪家好
  • 音乐网站可以用什么语言做罗湖网站建设多少钱
  • 建站模板网站WordPress tag 分类
  • 网站建设 自学沈阳中小企业网站制作
  • 可信的品牌网站建设wordpress 如何制作模板
  • 惠州网站建设技术支持店铺设计方案
  • 黄冈论坛网站有哪些网站建设中图片尺寸