- 定义 这是一种无重复值的有序列表(若是添加了重复项至关于添加无效,对象除外,由于他们不会被转为字符串类型相同的对象在其中就是两个object,也没有类型转换)。Set容许对它包含的数据进行快速访问,从而增长了一个追踪离散值的更有效方式。
- 基本操做与方法
let set = new Set();
set.add(5);
set.add("5");
console.log(set.size);
console.log(set.has(5))
set.delete(5);
set.clear();
let set1 = new Set([1, 2, 3, 4, 5, 5, 5, 5]);
复制代码
- forEach() 循环遍历set中元素
let set = new Set([1, 2, 3]);
set.forEach(function(vaule, key, ownSet){
console.log(vaule);
});
复制代码
forEach中回调函数要使用this值时在整个的第二个参数加上this,或者使用箭头函数。set.forEach((value) => this.output(value));
复制代码
- set对象转换为数组(剩余运算符实现)
let set = new Set([1, 2, 3]);
let arr = [...set];
复制代码
那么以这种方式咱们多了一种数组去重的办法:function deWeight(arr) {
return [...(new Set(arr))];
}
let arr = [1, 1, 1, 1, 1, 2];
console.log(deWeight(arr));
复制代码
- weakSet 是set对象的一个弱引用,set方法存入的对象当对象指定在外部指定去除时set对象内部任然会有,weakSet更加像是一个指向性的对象外部去除内部也不会存在 几点区别:
- weakSet各类方法只能传入对象
- 没有forEach方法