它类似对象,也是键值对的集合,但它的键的取值范围不限于字符串,可以是其他类型的值,包括对象,如下:
上面的代码,使用了Map结构的set方法,把o对象当成m的一个键,然后再用get方法读取这个键,接着用delete方法删除这个键。
Map也可以接受数组为参数。
也可以接受Set和Map作为参数。
如果对同一键多次赋值,后面的值将会覆盖前面的值。
读取一个未知键,则会返回undefined。
只有对同一对象的引用,Map结构才会视为同一个键。
上面的代码,看似是同一个键,其实是不同的键,因为这俩个数组实例的内存地址是不一样的,所以
get才会返回undefined。
同理,同样的值的俩个实例,Map看做不同的键。
Map 结构的实例有以下属性和操作方法。
(1)size,返回Map结构成员的总数。
(2)set(key,value)set方法设置键名key对应的键值value,然后返回整个Map结构,如果key已有值,则覆盖其值,没有则新生成该键。
(3)get(key),读取Map结构的key值,然如果没有则返回undefined。
(4)has(key),返回一个布尔值,表示Map结构是否存在key键。
(5)delete(key),返回一个布尔值,删除Map结构中的key键。
(6)clear()清除所有成员,没有返回值。
遍历方法
Map 结构原生提供三个遍历器生成函数和一个遍历方法。
Map.prototype.keys():返回键名的遍历器。Map.prototype.values():返回键值的遍历器。Map.prototype.entries():返回所有成员的遍历器。Map.prototype.forEach():遍历 Map 的所有成员。
需要特别注意的是,Map 的遍历顺序就是插入顺序。
Map 结构转为数组结构,比较快速的方法是使用扩展运算符(
...)。