js基础

js基础-Map

Map

与对象不同之处:对象是字符串键-任意类型值,Map是任意类型键-任意类值值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
const m = new Map();
const o = {p: 'Hello World'}

m.set(o, "content")
m.get(o) // "content"

m.has(o) // true
m.delete(o) // true
m.has(o) // false
m.delete(o) // undefined

const p = {name: '小明'}
m.set(p, "content")
// 清空所有值
m.clear()
m.get(p) // undefined

const q = {name: '蘑菇'}
m.set(q, "content")
// 返回所有键名的迭代器(Object.keys返回的所有键名的数组)
m.keys() //MapIterator
m.values() //MapIterator
m.entries() //MapIterator [key,value]

用一个二维数组初始化,里层的数组是一个长度为2的数组,第一个元素会被初始化为key,第二个元素会被初始化为value

1
2
3
4
5
6
7
const m = new Map([
['name', '张三'],
['title', 'Author']
])
//使用ES6的展开运算符...和keys,values可以方便将Map转为数组
[...m.keys()] // ['name','title']
[...m.values()] // ['张三','Author']

​ Map中的key是有序的 Object的key是无序的