类似于数组,但是成员的值都是唯一的,没有重复
const s = new Set();
[2,3,1,2,5,6,7].forEach(x => s.add(x));
console.log(s);
for(let sv of s){
console.info(sv);
}
console.log([...s],s.size);
去除数组中的重复元素
因为向Setj加入值不会发生类型转换
所以5和'5'是l两个不同的值
Set内部判断是否相等是采用"Same-value equality"
类似于精确相等运算符"==="
主要的区别是NaN等于自身,而精确相等运算符认为NaN不等于自身
const arr1 = [1,"1",2,3,4,3,4,5,6,7,6,7,8,9];
console.log("数组去重方法1:",...new Set(arr1));
Set四个方法
add(value)
delete(value)
has(value)
clear()
Array.from()方法可以将Set结构转为数组
//数组去重
console.log("数组去重",Array.from(new Set(arr1)));
遍历操作
/*
遍历操作
键名和键值是同一个值
keys(),values(),entries(),forEach()
*/
for(let x of s.entries()){
console.log(x);
}
forEach
let set1 = new Set([1,2,3]);
set1.forEach((value,key) => console.log(value * 2));
遍历的应用
let set2 = new Set([1,1,2,3]);
console.log(...set2)
let set3 = new Set([...set2].map(x => x**2));
console.log("map",set3);
let set4 = new Set([...set2].filter( x => x > 2));
console.log("filter",set4);