- 定义
这是一种无重复值的有序列表(如果添加了重复项相当于添加无效,对象除外,因为他们不会被转为字符串类型相同的对象在其中就是两个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方法