var s = new Set();
[2,3,5,4,2,2].map(x => s.add(x));
for (let i of s) {
console.log(i);
}
// 2 3 5 4
例一
var set = new Set([1,4]);
[...set]
[1,4]
例二
var items = ]);
items.size 5
例三
function divs () {
return [...document.querySelectorAll('div')];
}
Set(divs());
set.size 56
类似于
divs().forEach(div => set.add(div));
set.size 56
去除数组的重复成员
[...new Set(array)]
s.add(1).add(2).add(2);
注意2被加入了两次
s.size 2
s.has(1) true
s.has(2) true
s.has(3) false
s.delete(2);
s.has(2) false
]);
var array = Array.from(items);
dedupe(array) {
return Array.from( Set(array));
}
dedupe([1,1,3]) 遍历操作
-
keys()
:返回一个键名的遍历器
-
values()
:返回一个键值的遍历器
-
entries()
:返回一个键值对的遍历器
-
forEach()
:使用回调函数遍历每个成员
let set = new Set(['red','green','blue']);
(let item of set.keys()) {
console.log(item);
}
red
// green blue
(let item of set.values()) {
console.log(item);
}
(let item of set.entries()) {
console.log(item);
}
["red","red"] ["green","green"] ["blue","blue"]
Set.prototype[Symbol.iterator] === Set.prototype.values
true
var ws = WeakSet();
ws.add(1)
TypeError: Invalid value used in weak set
ws.add(Symbol())
TypeError: invalid value used in weak set
- WeakSet.prototype.add(value):向WeakSet实例添加一个新成员。
- WeakSet.prototype.delete(value):清除WeakSet实例的指定成员。
- WeakSet.prototype.has(value):返回一个布尔值,表示某个值是否在WeakSet实例之中。
WeakSet();
var obj = {};
var foo = {};
ws.add(window);
ws.add(obj);
ws.has(window); true
ws.has(foo);
ws.delete(window);
ws.has(window); false