版权声明:wuyujin1997 reserve all rights. https://blog.csdn.net/wuyujin1997/article/details/88741351
intro
Set
对象是ES6
新增,特点:元素不重复。
API
new Set(?arr)
构造(可以传入数组,会自动去重)。
size
集合大小
add(value) - Set
添加元素。(可链式编程)
has(value) - boolean
查询元素是否存在。
delete(value) - boolean
删除
clear()
清空
forEach(callbackFn, ?thisArg)
对容器内每个元素做操作。
keys()
用法同values()
,因为set只有value列表。
values()
entries()
不推荐。会返回两倍的set(见代码)。
遍历
- forEach()
- set.values()和set.keys()的使用方法相同。
- set.entries()不推荐使用,会返回双倍的数据量。
最后每一个entry的value依旧是长度为2的数组[value, value]
。
// 初始化
set = new Set([1,2,3,"4"]);
// forEach
set.forEach(function(value) {console.log(value);});
// 利用values()
values = set.values();
for (value of values) {
console.log(value);
}
values = set.values();
for (i = 0; i < set.size; i++) {
console.log(values.next().value);
}
// keys()方法的两种与values()用法相同。
// 利用entries()
entries = set.entries();
for (entry of entries) {
console.log(entry);
}
// (2) [1, 1]
// (2) [2, 2]
// (2) [3, 3]
// (2) ["4", "4"]
entries = set.entries();
for ([key, value] of entries) {
console.log(key, value);
}
// 1 1
// 2 2
// 3 3
// 4 4
// 可见,虽然是set对象,但是调用entries()会返回双倍的数据量。
entries = set.entries();
for ([key, value] of entries) {
console.log(value); // 只打印一次value。
}
// 调用`set.entries().next().value[0]`也可以。