文章目录
Map
在ES6中,Map是一种新的数据结构,它可以用来存储键值对,并且键可以是任何类型,而不仅仅是字符串类型。Map的作用如下:
- 存储键值对:Map可以存储任意类型的键值对,包括对象、函数、布尔值等。
- 快速查找:Map提供了快速查找键值对的方法,可以通过键来获取对应的值,而不需要遍历整个Map。
- 迭代器:Map提供了迭代器,可以遍历所有的键值对。
- 易于操作:Map提供了多种操作方法,如添加、删除、获取、清空等。
- 与数组的转换:Map可以与数组相互转换,可以通过Array.from方法将Map转换为数组,也可以通过new Map()方法将数组转换为Map。
- 解决键冲突问题:Map使用严格相等运算符(===)来判断键是否相等,因此不会出现键冲突的问题。
- 可以作为缓存:由于Map的键可以是任何类型,因此可以将函数的参数作为键,将函数的返回值作为值,从而实现一个简单的缓存功能。
一、创建
// 创建
let map = new Map([[1, 2, 3], [4, 5], ['name', 'zs']])
console.log(map); // Map(3) {1 => 2, 4 => 5, 'name' => 'zs'}
console.log(typeof map); // object
二、用法
1.set()方法
// 1.set() 给实例设置一对键值对,返回map实例,有两个参数,第一个key,第二个value
map.set(5, 6) // Map(4) {1 => 2, 4 => 5, 'name' => 'zs', 5 => 6}
map.set([1], [2]) // Map(5) {1 => 2, 4 => 5, 'name' => 'zs', 5 => 6, Array(1) => Array(1)}
map.set(function () { }, [2]) // Map(6) {1 => 2, 4 => 5, 'name' => 'zs', 5 => 6, Array(1) => Array(1), …}
console.log(map); // Map(6) {1 => 2, 4 => 5, 'name' => 'zs', 5 => 6, Array(1) => Array(1), …}
2.get()方法
// 2.get() 获取指定键名的键值,返回键值
console.log(map.get([1])); // undefined
console.log(map.get(5)); // 6
3.delete()方法
// 3.delete() 删除指定键值对,成功返回true,失败返回false
console.log(map); // Map(6) {1 => 2, 4 => 5, 'name' => 'zs', 5 => 6, Array(1) => Array(1), …}
map.delete(5)
console.log(map); // Map(5) {1 => 2, 4 => 5, 'name' => 'zs', Array(1) => Array(1), ƒ => Array(1)}
4.clear()方法
// 4.clear() 清空Map中所有的键值对
map.clear()
console.log(map); // Map(0) {size: 0}
5.has()方法
// 5.has() 判断Map中是否包含对应的键,返回布尔类型的值
console.log(map.has([1, 2, 3])); // false
console.log(map.has('name', 'zs')); // true
6.entries()方法
// 6.entries() 返回实例的键值对遍历器
for (let [key, value] of map.entries()) {
console.log(key); // 1 4 name [1] ƒ () { }
console.log(value); // 2 5 zs [2] [2]
}
7.keys()方法 values()方法
// 7.keys() values()
/*
keys( )方法:返回实例所有键名的遍历器。
values( ) 方法:返回实例所有键值的遍历器。
*/
for (let x of map.keys()) {
console.log(x); // 1 4 name [1] ƒ () { }
}
for (let y of map.values()) {
console.log(y); // 2 5 zs [2] [2]
}
8.forEach()方法
// 8.forEach() 循环遍历Map中的所有键值对
map.forEach((key, value) => {
console.log(key + ':' + value); // 2:1 5:4 zs:name 2:1 2:function () { }
})
9.size属性
// 9.size属性 获取Map中键值对的数量
console.log(map.size); // 5