set与weakset
set
-
新增集合数据类型
-
其中的数据都是唯一的
-
不能通过索引获取值
-
通过
new Set()
创建,可以直接将数组传入 -
不同于对象,向其中添加数字类型数据和字符串类型数据是不一样的
API
-
add()
向set类数组对象中加入元素,返回新生成的set -
delete()
从set类数组对象中删除指定元素,返回布尔值 -
has()
判断set类数组对象中是否含有指定元素,返回布尔值 -
clear()
清除set类数组对象中的所有元素,返回undefined
-
size
获得set类数组对象的元素个数
通过for...of...
遍历
const clothes = new Set(['skirt', 'T-shirt', 'coat']);
for (const item of clothes) {
console.log(item)
}
通过forEach
遍历
-
为了和数组中的
forEach()
统一,同样需要传入回调函数-
回调函数中的参数,参数1与参数2相同
-
参数1:属性名
-
参数2:属性值
-
参数3:调用的数组
clothes.forEach((key, value, ownarr) => {
console.log(key, value, ownarr)
}) -
-
通过set对象.value()
获得Iterator
接口
-
通过调用
next()
遍历setconst Clothes= clothes.values()
undefined
Clothes.next()
{value: "skirt", done: false}
Clothes.next()
{value: "T-shirt", done: false}
Clothes.next()
{value: "coat", done: false}
Clothes.next()
{value: undefined, done: true}
WeakSet
-
其中的元素只能是对象
-
因为没有
Iterator
接口,所以不能通过forEach
或for of
遍历 -
没有
clear()
方法,但是可以自动清除-
只要将引用的某个元素更改为
null
-