es6新特性之Map

es6里面的Map的基本用法

为什么要新出来个Map呢?

        我们知道,Js对象在本质上是就键值对的集合,比如一个普通的json对象就是键值对的集合。在es6之前的js对象有个缺点,就是它只能使用字符串充当键。ES6正是为了解决key只能为字符串才提供了Map结构。它类似与对象,也是键值对集合,但是”键”的范围不限于字符串,言外之意就是说对象也可以当作键,比如下面的代码(如果嫌node麻烦的话,新建个html,直接在谷歌浏览器中打开即可,现在最新版本的谷歌是支持set和map的):

<script>
	var m = new Map();
	var obj = {greet: "你好"};
	m.set(obj, "greet world");
	console.log( m.get(obj) ); 
</script>

 执行结果,

image.png

可以看到,在es6的map中,使用对象作为key是没有问题的。

Map这种数据结构还可接收一个数组进行初始化:

<script>
	var map = new Map([["name", "小明"], ["age", "22"]]);
	console.log(map.size);
	console.log(map.has("name")); 
	console.log(map.get("name")); 
</script>

 执行结果:

image.png

注意,不能写成new Map([{"name", "小明"}, {"age", "22"}]);哦。另外,在使用对象作为key时,要小心下面的情况。

<script>
var map = new Map();
map.set(['a'], "zhao"); 
map.get(['a']); // 结果为空
</script>

 因为,两次写的['a']的地址并不同,是不同的变量,我们作为key的对象其实是用对象的地址作为key的。地址不同,则在map中视为两个不同的键。

Map结构有以下属性和方法: 
- size : 返回成员总数。 
- set(key, value) : 设置一个键值对。 
- get(key) : 读取一个键。 
- has(key) : 返回一个布尔值,表示某个键是否在Map结构中。 
- delete(key) : 删除某个键。 
- clear() : 清除所有成员。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值