JavaScript之Map

158 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第24天,点击查看活动详情

✔个人主页:Mr.Darcy8的掘金主页

🎉欢迎关注👀点赞👍收藏⭐留言📝以及交流人生哲理🎈学习心得🎁

引入

通过之前的了解我们知道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键值对,创建了新的,旧的就没有了

新人上路,欢迎互相帮扶~Mr_darcy8的掘金主页

可以的话给咱点个赞呗💖