let map = new Map()
在JavaScript中,
Map
是一种内置的数据结构,用于存储键值对(key-value pairs)。与普通对象相比,Map
有一些独特的特性,例如它允许任何类型的值作为键,并且可以轻松地获取键的数量等。以下是一个关于如何使用
Map
的基本示例:创建一个 Map
JavaScript复制
let map = new Map();
添加键值对
JavaScript复制
map.set('key1', 'value1');
map.set('key2', 'value2');
map.set(1, 'number key');
map.set({ key: 'object' }, 'object key');
获取值
JavaScript复制
console.log(map.get('key1')); // 输出:value1
console.log(map.get(1)); // 输出:number key
console.log(map.get({ key: 'object' })); // 输出:undefined,因为对象的引用不同
检查键是否存在
JavaScript复制
console.log(map.has('key1')); // 输出:true
console.log(map.has('key3')); // 输出:false
删除键值对
JavaScript复制
map.delete('key2');
console.log(map.has('key2')); // 输出:false
清空 Map
JavaScript复制
map.clear();
console.log(map.size); // 输出:0
遍历 Map
JavaScript复制
map.set('key1', 'value1');
map.set('key2', 'value2');
// 遍历键
for (let key of map.keys()) {
console.log(key); // 输出:key1, key2
}
// 遍历值
for (let value of map.values()) {
console.log(value); // 输出:value1, value2
}
// 遍历键值对
for (let [key, value] of map) {
console.log(`${key}: ${value}`); // 输出:key1: value1, key2: value2
}
使用数组初始化 Map
JavaScript复制
let mapFromArray = new Map([
['key1', 'value1'],
['key2', 'value2']
]);
console.log(mapFromArray.get('key1')); // 输出:value1
注意事项
-
键的唯一性:Map中的键是唯一的,如果尝试用相同的键调用
set
方法,会覆盖之前的值。 -
键的类型:Map允许任何类型的值作为键,包括对象、函数等。
-
与普通对象的区别:
-
Map的键可以是任何类型,而普通对象的键通常是字符串或Symbol。
-
Map的键值对数量可以通过
size
属性直接获取,而普通对象需要手动计算。 -
Map是迭代器,可以直接用
for...of
循环遍历,而普通对象需要使用Object.keys
等方法。
-
Map
是一个非常强大的数据结构,适用于需要存储键值对且对键的类型没有限制的场景。