在JavaScript中,Map
是一种特殊的键值对集合,其中的键和值可以是任意类型(对象、基本类型等)。与其他对象不同,Map
的键可以是任意值,包括函数、对象和基本类型。
Map
中的值是按引用存储的,这意味着如果你存储一个对象到Map
中,然后修改这个对象,Map
中的值也会随之改变。
示例:
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 }
Map
允许任何类型的键,不仅仅是字符串或符号。Map
的性能通常优于普通对象。Map
中的元素是有序的,遍历时会按照插入顺序返回。Map
来存储计算结果或数据,以便快速访问。Map
非常有用。Map
的唯一键特性来去除数组中的重复项。如果你不希望Map
中的对象引用发生变化,可以在存储前创建对象的副本。
示例:
const obj = { a: 1 };
const myMap = new Map();
myMap.set('objKey', { ...obj }); // 使用扩展运算符创建副本
obj.a = 2;
console.log(myMap.get('objKey')); // { a: 1 },副本未受原对象修改影响
通过这种方式,即使原对象发生变化,Map
中存储的对象副本也不会受到影响。
领取专属 10元无门槛券
手把手带您无忧上云