1.set的一些重要的特性
(1)Set.prototype.constructor,构造函数,默认是set函数
(2)Set.prototype.size,返回set实例的成员总数
(3)set是一种数据结构,是伪数组,无法访问长度,可以Array.from方法可以将set结构转化数组,再访问它的长度;
(4)set里面的原始值不允许重复,let set = new Set([1,2,3,1,2,3]),此时set为[1,2,3]
(5)set里面添加的对象即使相同也是不相等的,例如:set.add({a:1}); set.add({a:1}); 可以同时存在;
2.set的四种操作方法:
// 添加元素
add(value),用于向数组中添加元素,返回set结构本身;
set.add(11112);
//删除元素
delete(value),删除元素,返回一个bool值,表示是否删除成功;
set.delete(23);
//是否存在某个元素
has(value),返回一个bool值表示set中是否含有本元素;
set.has(13);
console.log(set.has(13));
//清除所有成员
clear(),清除所有的set成员,没有返回值;
set.clear();
console.log(set);
3.set的遍历方法
Set 会维护值插入时的顺序,因此支持按顺序迭代。
集合实例可以提供一个迭代器(Iterator),能以插入顺序生成集合内容。可以通过 values()方
法及其别名方法 keys()(或者 Symbol.iterator 属性,它引用 values())取得这个迭代器:
console.log(set1.keys==set1[Symbol.iterator]);//true
console.log(set1.values==set1[Symbol.iterator]);//true
//1.
let set1 = new Set(['喵喵','旺旺','啾啾']);
for(let key of set1.keys()){
console.log(key);
}
//output:
//喵喵
//旺旺
//啾啾
//2.
for(let value of set1.values()){
console.log(value);
}
//output:
//喵喵
//旺旺
//啾啾
//3.
for (let value of set1[Symbol.iterator]()) {
console.log(value);
}
//output:
//喵喵
//旺旺
//啾啾
//4.
for(let item of set1.entries()){
console.log(item);
}
//output:
//[ '喵喵', '喵喵' ]
//[ '旺旺', '旺旺' ]
//[ '啾啾', '啾啾' ]
//5.
let myArr = new Set([1,2,3,4,5]);
for(let x of myArr){
console.log(x);
}
//output:
//1
//2
//3
//4
//5