Set数据结构
JavaScript 在绝大部分历史时期内只有一种集合类型,那就是数组。数组在 JavaScript 中的使用方式和其它语言很相似,但是其它集合类型的缺乏导致数组也经常被当作队列(queues)和栈(stacks)来使用。
因为数组的索引只能是数字类型,当开发者觉得非数字类型的索引是必要的时候会使用非数组对象。这项用法促进了以非类数组对象为基础的 set 和 map 集合类型的实现。
Set是类似数组的一种结构,可以存储数据,与数组的区别主要是 Set中的元素不能重复,而数组中的元素可以重复。
一句话总结:Set类型是一个包含无重复元素的有序列表
创建Set和并添加元素
Set本身是一个构造函数。
Set中不能添加重复元素
看下面的代码:
|
|
在上面的代码中,数字5和字符串5都会添加成功。为什么呢?
Set是使用什么机制来判断两个元素是否相等的呢?
是通过我们前面说过的 Object.is(a, b) 来判断两个元素是否相等。
|
|
使用数组初始化Set
|
|
使用Set的 has() 方法可以判断一个值是否在这个set中。
移除Set中的元素
delete(要删除的值) :删除单个值
clear():清空所有的值
遍历Set
数组有个方法forEach可以遍历数组。
Set也有forEach可以遍历Set。
使用Set的forEach遍历时的回调函数有三个参数:
参数1:遍历到的元素的值
参数2:对set集合来说,参数2的值和参数1的值是完全一样的。
参数3:这个 set 自己
|
|
for…of也可以遍历set
将Set转换为数组
将数组转换为Set相当容易,你只需要在创建Set集合时把数组作为参数传递进去即可。
把Set转换为数组使用前面讲到的扩展运算符也很容易
这种情况在需要去数组中重复元素的时候非常好用。
Set提供了处理一系列值的方式,不过如果想给这些值添加一些附加数据则显得力不从心,所以又提供了一种新的数据结构:Map
访客的ip和所在地址: 访问时间: 当前时间: