本文共 2057 字,大约阅读时间需要 6 分钟。
Set 是ES6新增的数据结构。它类似于数组,但是成员的值都是唯一的,没有重复的值。
根据它的规则,可以用于数组去重:
let a = [1,2,3,4,3,2];let set = new Set(a);console.log(set);//Set {1,2,3,4}
let set = new Set(); //实例化一个空 set 集合
keys
方法、values
方法、entries
方法返回的都是遍历器对象。由于 Set 结构没有键名,只有键值(或者说键名和键值是同一个值),所以keys
方法和values
方法的行为完全一致。案例如下:
let set = new Set(['red', 'green', 'blue']);for (let item of set.keys()) { console.log(item);}// red// green// bluefor (let item of set.values()) { console.log(item);}// red// green// bluefor (let item of set.entries()) { console.log(item);}// ["red", "red"]// ["green", "green"]// ["blue", "blue"]
上面代码中,entries方法返回的遍历器,同时包括键名和键值,所以每次输出一个数组,它的两个成员完全相等。
扩展运算符(...)内部使用for...of 循环,所以也可以用于Set结构。
let set = new Set(['red', 'green', 'blue']);let arr = [...set];// ['red', 'green', 'blue']
for...of用法:
const s = new Set();[2, 3, 5, 4, 5, 2, 2].forEach((x)=>{s.add(s)}); //箭头函数,一般用于回调函数for (let i of s) { //for..of 可以遍历数组 console.log(i); //输出数组中每个成员}console.log(s); //输出添加了数之后的 s 集合// 2 3 5 4//Set {2,3,4,5}
上面的代码通过add方法向Set结构加入成员,结果表明Set结构不会添加重复的值。
s.add(1).add(2).add(2);// 注意2被加入了两次s.size // 2s.has(1) // true node环境s.has(2) // trues.has(3) // falses.delete(2);s.has(2) // false
let set = new Set();let a = NaN;let b = NaN;set.add(a);set.add(b);set // Set {NaN}-------------let set = new Set();set.add({});set.size // 1set.add({});set.size // 2
在上面代码中,结果说明,在Set内部,两个NaN是相等的,而两个对象是不相等的,即使对象的内容一样。
let map = new Map(); //实例化一个空 map 集合
const map = new Map([ ['name', '张三'], ['title', 'Author']]);map.size // 2map.has('name') // truemap.get('name') // "张三"map.has('title') // truemap.get('title') // "Author"
keys()
:返回键名的遍历器。
values()
:返回键值的遍历器。
entries()
:返回所有成员的遍历器。
forEach()
:遍历 Map 的所有成员。
转载地址:http://dwxgn.baihongyu.com/