set容器
无序不可重复的多个Value的集合体
语法:
new Set([iterable]);
-
参数
-
iterable:如果传递一个可迭代对象,它的所有元素将被不重复地添加到新的 Set中。如果不指定此参数或其值为null,则新的 Set为空。
-
return:一个新的set对象
Set 结构没有键名,只有键值(或者说键名和键值是同一个值)
set的值是无序不可重复的,所以Set中的元素只会出现一次,也就是Set 中的元素是唯一的。
set内部判断不可重复,使用的算法叫做“Same-value-zero equality”,它类似于精确相等运算符(===),主要的区别是 Set 加入值时认为NaN等于自身,而精确相等运算符 认为NaN不等于自身。
举例:
//如果不指定此参数或其值为null,则新的 Set为空
console.log(new Set()); //Set(0) {}
//所有元素将被不重复地添加到新的 Set 中
//set中只含有一个2
//Set(5) {1, 2, 3, "A", "B"}
console.log(new Set([1,2,3,2,"A","B"]));
console.log(new Set([0,-0,"0"])); //Set(2) {0,"0"}
console.log(new Set([false,0])); //Set(2){false,0};
//Set(5){null,undefined,NaN,0,false}
console.log(new Set([null,undefined,NaN,0,false]));
//Set 加入值时认为NaN等于自身,而精确相等运算符 (===) 认为NaN不等于自身
console.log(NaN===NaN); //false
console.log(new Set([NaN,NaN])); //Set(1) {NaN}
set 实例属性
-
Set.prototype.constructor:返回实例的构造函数。默认情况下是Set
-
Set.prototype.size:返回Set对象的值的个数。
//Set.prototype.size
console.log(new Set([1,4,5,"dd","res"]).size); //5
set 实例方法
1.set 实例的操作方法(用于操作数据)
-
Set.prototype.add(value):在Set对象尾部添加一个元素。返回该Set对象。
-
Set.prototype.delete(value):删除某个值,返回一个布尔值。删除成功则为true,反之则为false
-
Set.prototype.has(value):表示该值在Set中是否存在,返回一个布尔值。
-
Set.prototype.clear():清除Set对象中所有成员,没有返回值。
举例:
let set =new Set([1,"aa",3]);
console.log(set.add("cc")); //Set(4) {1, "aa", 3, "cc"}
console.log(set.delete("aa")) //true
console.log(set.has("aa")); //false
set.clear();
console.log(set); //Set(0){}
2.set 实例的遍历方法(用于遍历数据)
-
Set.prototype.keys():返回键名的遍历器
-
Set.prototype.values():返回键值的遍历器
-
Set.prototype.entries():返回键值对的遍历器
-
Set.prototype.forEach(callbackFn[, thisArg]):使用回调函数遍历每个成员