es6中的Map和Set结构

Set 和 Map 结构也原生具有 Iterator 接口,可以直接使用for...of循环

  • Map
    Map是一组键值对的结构,具有极快的查找速度
    与Map有关的方法的使用
var m = new Map(); // 空Map
m.set('Adam', 67); // 添加新的key-value
m.set('Bob', 59);
//遍历一下
for (let pair of map) {
  console.log(pair);
}//输出
//[''Adam',67]
//['Bob',59]

//遍历一下
for (var [name, value] of m) {
  console.log(name + ": " + value);
}
//输出
//Adam:67
//Bob:59
m.has('Adam'); // 是否存在key 'Adam': true
m.get('Adam'); // 67
m.delete('Adam'); // 删除key 'Adam'
m.get('Adam'); // undefined

请添加图片描述

  • Set

可以这样理解,Set可以实现去重,其键名即键值

Set和Map类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在Set中,没有重复的key。
Set和相关方法处理后,比如添加或者删除去重返回的结果都是一个对象

var s1 = new Set(); // 空Set
var s2 = new Set([1, 2, 3]); // 含1, 2, 3
var s = new Set([1, 2, 3, 3, '3']);
s; // Set {1, 2, 3, "3"}
**返回的是一个对象!**

请添加图片描述
与Set有关的方法

//添加一个元素
var s = new Set([1, 2, 3]);
for (var e of s) {
  console.log(e);
}
//输出 1 2 3
s.add(4);
s; // Set {1, 2, 3, 4}
//删除一个元素
var s = new Set([1, 2, 3]);
s; // Set {1, 2, 3}
s.delete(3);
s; // Set {1, 2}

总结:1、Set 结构遍历时,返回的是一个值,而 Map 结构遍历时,返回的是一个数组,该数组的两个成员分别为当前 Map 成员的键名和键值。 2、遍历的顺序是按照各个成员被添加进数据结构的顺序

补充

ES6 的数组、Set、Map 都部署了以下三个方法,调用后都返回遍历器对象。

entries() 返回一个遍历器对象,用来遍历[键名, 键值]组成的数组。对于数组,键名就是索引值;对于 Set,键名与键值相同。Map
结构的 Iterator 接口,默认就是调用entries方法。 keys() 返回一个遍历器对象,用来遍历所有的键名。 values()
返回一个遍历器对象,用来遍历所有的键值。
let arr = [‘a’, ‘b’, ‘c’];
for (let pair of arr.entries()) {
console.log(pair);
}
// [0, ‘a’]
// [1, ‘b’]
// [2, ‘c’]

参考阮老师文章
参考廖老师的文章

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值