首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js map引用

在JavaScript中,Map是一种特殊的键值对集合,其中的键和值可以是任意类型(对象、基本类型等)。与其他对象不同,Map的键可以是任意值,包括函数、对象和基本类型。

基础概念

  1. 创建Map
  2. 创建Map
  3. 设置键值对
  4. 设置键值对
  5. 获取值
  6. 获取值
  7. 检查键是否存在
  8. 检查键是否存在
  9. 删除键值对
  10. 删除键值对
  11. 遍历Map
  12. 遍历Map

引用问题

Map中的值是按引用存储的,这意味着如果你存储一个对象到Map中,然后修改这个对象,Map中的值也会随之改变。

示例

代码语言:txt
复制
const obj = { a: 1 };
const myMap = new Map();
myMap.set('objKey', obj);

console.log(myMap.get('objKey')); // { a: 1 }

obj.a = 2;

console.log(myMap.get('objKey')); // { a: 2 }

优势

  1. 键的多样性Map允许任何类型的键,不仅仅是字符串或符号。
  2. 性能:在频繁增删键值对的场景下,Map的性能通常优于普通对象。
  3. 有序性Map中的元素是有序的,遍历时会按照插入顺序返回。

应用场景

  1. 缓存:可以用Map来存储计算结果或数据,以便快速访问。
  2. 数据关联:当需要将复杂对象作为键来关联数据时,Map非常有用。
  3. 去重:可以利用Map的唯一键特性来去除数组中的重复项。

解决问题的方法

如果你不希望Map中的对象引用发生变化,可以在存储前创建对象的副本。

示例

代码语言:txt
复制
const obj = { a: 1 };
const myMap = new Map();
myMap.set('objKey', { ...obj }); // 使用扩展运算符创建副本

obj.a = 2;

console.log(myMap.get('objKey')); // { a: 1 },副本未受原对象修改影响

通过这种方式,即使原对象发生变化,Map中存储的对象副本也不会受到影响。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

共10个视频
尚硅谷JS模块化教程/视频/视频.zip/视频
腾讯云开发者课程
共32个视频
动力节点-Maven基础篇之Maven实战入门
动力节点Java培训
共49个视频
动力节点-MyBatis框架入门到实战教程
动力节点Java培训
领券