时间:2021-05-28
ES6里加入了一个新数据解构Set,和Java的Set一样,它里面不存放重复的元素。Set实现为一个类,使用时需要先new。
var s1 = new Set()s1.add(1)s1.add(2)s1.add(3)s1.add(1) var s2 = new Set()s2.add('a')s2.add('a') // 输出1,2, 3for (var i of s1 ) { console.log(i)}// 输出afor (var i of s2 ) { console.log(i)}上面用Set的add方法添加元素,重复添加的,不会存进去。
Set构造器还可以接受数组作为参数传入
var s3 = new Set([1,2,3,1])s3.size // 3可以看到重复的数字1依然没有放进去,另外取Set的长度使用size,不是length。
需要注意的是对于{}或[],它们是两个同的对象
var s4 = new Set()s4.add({})s4.add({})s4.size // 2一、遍历Set (for of)
var s1 = new Set()s1.add(1)s1.add(2)s1.add(3) // 输出1,2, 3for (var i of s1) { console.log(i)}二、把Set转成数组
var s1 = new Set()s1.add(1)s1.add(2) // toArrayvar a1 = Array.from(s1)Array.isArray(a1) // true // orvar a1 = [...new Set(s1)]三、利用Set给数组去重
function distinct(arr) { return Array.from(new Set(arr))// return [...new Set(arr)]}如
Set的属性
constructor
size
Set的方法
has(val) 判断是否存在该元素
add(val) 添加元素
delete(val) 删除元素
clear 删除所有元素
keys
values
entries
forEach 遍历元素
map
filter
四、WeakSet
WeakSet和Set一样都不存储重复的元素,但有一些不同点
1. 只存储对象类型元素
ws = new WeakSet()ws.add(1)FF下报错如下
2. 只有add/delete/clear/has三个方法,不能遍历,没有size属性等
ws = new WeakSet()ws.size // undefinedws.forEach // undefinedMDN的解释
WeakSet 对象中存储的对象值都是被弱引用的, 如果没有其他的变量或属性引用这个对象值, 则这个对象值会被当成垃圾回收掉. 正因为这样, WeakSet 对象是无法被枚举的, 没有办法拿到它包含的所有元素
WeakSet主要用来储存DOM节点,当这些节点从文档移除时,不会引发内存泄漏。
以上所述就是本文的全部内容了,希望大家能够喜欢。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
ES6中提供了两新数据结构-Set和WeakSet。Set是类似于数组,但是成员变量的值都是唯一的,没有重复的值。WeakSet也是不重复的值的集合,但是只能用
es6是ECMAScript6(以下简称ES6)。 ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,EuropeanComputerMa
本文实例讲述了ES6新数据结构Set与WeakSet用法。分享给大家供大家参考,具体如下:新数据结构Set与WeakSet1.SetSet类似于数据,但是成员值
介绍ECMAScript6(以下简称ES6)是JavaScript语言的下一代标准。因为当前版本的ES6是在2015年发布的,所以又称ECMAScript201
JavaScript箭头函数是ECMAScript6中引入的编写函数表达式的一种简便方法。通常,在JavaScript中,可以通过两种方式创建函数:函数语句。函