javascript高级程序设计阅读收获(6.6)——Set

1.创建一个Set

set就像是一个集合,里面不会有重复元素。

const m = new Set();

const s1 = new Set(["val1","val2","val3"]);
console.log(s1.size);

const s2 = new Set({
   
	[Symbol.iterator]:function*(){
   
		yield "val1";
		yield "val2";
		yield "val3";
	}
});
console.log(s2.size);
  1. 通过构造方法来创建一个Set对象。
  2. 通过给构造方法传入一个数组来创建Set对象。
  3. 通过给构造方法传入一个自定义迭代器来创建Set对象。

2.Set类型的基本操作方法

const s = new Set();
s.add("Matt").add("Frisbie");

console.log(s.delete("Matt"));//true

console.log(s.has("Matt"));//false
console.log(s.has("Frisbie"));//true

s.clear();
console.log(s);//Set(0) {}
  1. add方法用来给Set对象添加值。
  2. has方法用来判断Set对象中是否含有该值。
  3. clear方法用来清空Set。
  4. delete方法根据值来删除Set对象中的值。

3.迭代Set

const s = new Set(["val1","val2","val3"]);

for(let value of s.values){
   
	console.log(value);
}
for(let value of s[Symbol.iterator]){
   
	console.log(value);
}
for(let value of s.entries){
   
	console.log(value);//["val1","val1"]
}
  1. 通过values方法获取其迭代。
  2. 通过Symbol.iterator符号来获取其迭代对象。
  3. 通过entries方法来获取其迭代对象。用这种方式获取的每次迭代为一个包含两个值的数组,第二个值为第一个值得重复出现
const s = new Set(["val1","val2","val3"]);
s.forEach((val,dupval))=>console.log(`${
     val}-------->${
     dupval}`);
  1. 也可以通过forEach方法来遍历Set,第二个参数dupval用来重写内部回调this的值