最近看一些别人的代码时候发现在那些代码中经常会出现Map和Set等,有丶优雅,比我这个只会for的萌新不知道高到那里去了,所以决定学习一下ES6的Set和Map。
Set(集合)
ES新增的数据结构set和数组类似,但不是数组,本质上是一个集合。set数据结构有一个特点:
set存储的成员是唯一的
因为set只是存储的值(value)而没有键(key),所以它里边的成员不能有重复。
JavaScript中的Set()是一个构造函数,用来生成set数据结构。
let s = new Set()
[1, 2, 3, 4, 5, 5, 4, 3, 2, 1].forEach(x => s.add(x))
for (let i of s) {
console.log(i)
} // 1, 2, 3, 4, 5
上面例子展示了如何向set中添加成员,并且说明了set不会添加重复的成员。
Set()也可以接受数组作为参数
let s = new Set([1,2,3,4,5,5,4,3,2,1])
console.log(s) // Set(5) {1,2,3,4,5}
和上面的效果是一样的
同时Set()构造函数还可以接受迭代器作为参数
let a=[1,2,3,4,4]
let iter=a[Symbol.iterator]();
let s=new Set(iter)
console.log(s) // Set(4) {1,2,3,4}
除了存放数字,字符串之外,set也可以像数组一样存放对象
let a = {
name: 'jack'
}
let b = {
name: 'rose'
}
let s = new Set()
s.add(a)
s.add(b)
console.log(s)
结果如下:

看到这里,是不是想起了什么?没错,就是数组去重
其实Set不光有add这一个方法,我们可以通过prototype来查看其它方法。输入console.log(Set.prototype)
结果如下:

`
网友评论