发表于: 2019-11-15 19:31:25
0 1068
今天完成的事情:
1 前台课程列表调试
明天计划的事情:
1 前台课程搜索,年级调试
遇到的问题:
1 暂无
收获:
ES6提供了新的数据结构Set
用法例var a = new Set() 它类似于数组,但是成员的值都是唯一的,没有重复的值
Set函数可以接受一个数组(或具有iterable接口的数据结构作为参数),用来初始化,例子如下
set去重:数组,字符串
上面字符串去重的时候,set转换后他是一个数组,所以用join('')转换为字符串
注意:向Set加入值时,不会发生类型转换,5和"5"是不同的值。Set内部判断使用的算法叫做"Same-value-zero equality",它类似于===,两个对象{} {},不管有无内容,都是不相等的。但区别是向Set加入值时两个NaN是相等的,而精确相等运算符认为NaN !== NaN。
Set 实例的属性和方法
操作方法:
用于操作数据,使用时例如.size这样即可
Set.prototype.size 返回Set实例的成员总数
Set.prototype.add(···) 添加某个值,返回Set结构本身
Set.prototype.delete(···) 删除某个值,返回布尔值,表示删除是否成功
Set.prototype.has(···) 返回一个布尔值,表示该值是否为Set的成员
Set.prototype.clear() 清除所有成员,没有返回值
遍历操作:
Set的遍历顺序就是插入顺序(用Set存回调函数列表,调用时就能保证按照添加顺序调用)
Set.prototype.keys() / values() 返回键名 / 键值的遍历器,由于Set结构没有键名,只有键值(或说键名和键值一致),所以keys方法和values方法的行为完全一致
Set.prototype.entries() 返回键值对的遍历器
Set.prototype.forEach() 使用回调函数遍历每个成员
forEach函数的参数与数组的forEach一致,依次键值、键名、集合本身。另一个参数this。注意,Set 结构的键名就是键值(两者是同一个值),因此参数1,2值永远都是一样。
其他相关
Array.from(,) 方法可以将 Set 结构转为数组,逗号后还可写函数,参数就是前面中的元素
拓展运算符... 内部使用for...of循环,所以也可以用于 Set 结构
数组的map和filter方法也可以间接用Set
Set很容易地实现并集Union、交集Intersect和差集Difference
注意:差集如果4也想有,那得反过来在写一遍,把a改成b,b改成a
在遍历操作中,同步改变原来的Set结构,没有直接的方法,但有两种变通方法
评论