Map对象存有键值对,其中的键可以是任何数据类型。
Map声明:
let data1 = new Map() // 创建空Map
let data2 = new Map([['a',00],['b',7]]) // {'a' => 00,'b' => 7}
Map数据结构使用:
set():添加元素,支持链式操作;重复添加同一key,会覆盖旧值
let data = new Map([['a',1],['b',3]])
data.set('a',7) // Map(2) {'a' => 7, 'b' => 3}
get(): 获取键对应内容
let data = new Map([['a',1],['b',3]])
data.get('a'). // 1
has(): 判断元素是否存在,返回值true、false
let data = new Map([['a',1],['b',3]])
data.has('a'). // true
data.has('c'). // false
delete(): 删除元素
let data = new Map([['a',1],['b',3]])
data.delete('a')
console.log(data) // Map(1) {'b' => 3}
clear(): 清空元素
let data = new Map([['a',1],['b',3]])
data.clear()
console.log(data) // Map(0) {size: 0}
keys(): 返回 Map 对象中键的数组
let data = new Map([['a',1],['b',3]])
console.log(data.keys()) // MapIterator {'a', 'b'}
values(): 返回 Map 对象中值的数组
let data = new Map([['a',1],['b',3]])
console.log(data.values()) // MapIterator {1, 3}
forEach(): 遍历Map,第一个形参是函数,函数形参为value,key
let data = new Map([['a',1],['b',3]])
data.forEach((value,key)=> {
console.log(value, key)
})
// 1 'a'
// 3 'b'
Map基本方法小结:
方法 | 作用 |
set() | 添加元素,支持链式操作;重复添加同一key,会覆盖旧值 |
get() | 获取键对应内容 |
has() | 判断元素是否存在,返回值true、false |
delete() | 删除元素 |
clear() | 清空元素 |
keys() | 返回 Map 对象中键的数组 |
values() | 返回 Map 对象中值的数组 |
forEach() | 遍历Map,第一个形参是函数,函数形参为value,key |
Map属性:
属性 | 作用 |
size | 获取 Map 数量 |
Map与普通对象区别:
1. 对象的键只能是字符串或 Symbols,Map的键不局限字符串,可以是对象、函数等
2. Map种的键值对是有序的,对象则是无序键值对的集合
3. Map存取数据性能更好
4. Map可以通过 size 属性获得 Map 键值对个数