引入
通过之前的了解我们知道JS中的对象很像其他语言中的“字典”数据类型——一个键对应一个值,是一串键值对构成的数据类型。
但是我们也发现,JavaScript的对象又不完全等同于字典。因为JavaScript的对象只能是字符串来构成键
实际生活中,用数值或者其他数据类型来构成键其实也是很需要的,比如我们班每个同学的序号和其对应分数。这样就没必要用字符串来对应分数,都用数字类型存储就完全ok了。
所以在ES6规范中引入了新的数据类型map,来适配上面的这种需要。且具有极高的查找速度——
1.构建map
如果我们想构建一个map,就需要创建一个键值对的对照表。查找的时候会直接依据名字查找数据,无论表有多大,查找速度都不会变慢:
var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]); m.get('Michael'); // 95
如上代码。我们用new map来创建一个map,并赋值给m。new map里面是一个用中括号括起来的各个键值对组成的array。
创建好之后用get就可以把你想取出的键对应的值取出来了
2.map的相关方法
我们知道怎么创建一个map了,但是非常尴尬的是如果这么创建的map的话显然非常麻烦。 我们接下来就来了解一下如何简单且符合程序逻辑地创建一个map:
var m = new Map(); // 空Map m.set('Adam', 67); // 添加新的key-value
如此,其实我们可以在需要map的时候定义一个,然后用set来添加新的记录。
除此之外,map还具有以下可操作的方法:
m.has('Adam'); // 是否存在key 'Adam': true m.get('Adam'); // 67 m.delete('Adam'); // 删除key 'Adam' m.get('Adam'); // undefined
需要注意的是,一个key只能对应一个value,重复对一个key写入value会把前一个value替代掉。可以理解成每次都是在创建新的key和value键值对,创建了新的,旧的就没有了