美文网首页
对于ES6中Set和Map的学习

对于ES6中Set和Map的学习

作者: o0ther | 来源:发表于2019-08-01 15:28 被阅读0次

最近看一些别人的代码时候发现在那些代码中经常会出现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)

结果如下:


image.png

看到这里,是不是想起了什么?没错,就是数组去重

其实Set不光有add这一个方法,我们可以通过prototype来查看其它方法。输入console.log(Set.prototype)

结果如下:


image.png

`

相关文章

网友评论

      本文标题:对于ES6中Set和Map的学习

      本文链接:https://www.haomeiwen.com/subject/biggdqtx.html