set 类似于array 但是成员的值是唯一的
var arr=new Array(); //arr[0] var obj=new Object(); //obj.name var s=new Set(); s.add(1); s.add(1).add(2).add(3); //Set(3) {1, 2, 3} s.add(1).add(2).add(2).add(1); //Set(2) {1, 2} 会去重 数据是唯一的 //另一种方式 var s2=new Set([1,2,3,4,5,2,1,3,2,2,1]); s2;//Set(5) {1, 2, 3, 4, 5} var s3=new Set(); [1,2,3,4,5,2,1,3,2,2,1].forEach((item)=>{ s3.add(item); }) s3; //Set(5) {1, 2, 3, 4, 5}
具体方法
add() //添加 delete() //删除单个 按照名字来,不是索引,返回true false s2.clear(); //清楚全部 不需要参数 无返回值 size //长度 s2.has() //判断是否为set成员 返回true false var a1=new Set([1,2,3]) a1.delete(2); //true a1; //Set(2) {1, 3} a1.has(1); //true
数组和set互相转换
//转为数组 Array.from() let s4=new Set([1,2,3,2,4]); let arr=Array.from(s4); arr; //(4) [1, 2, 3, 4] //另一种 var arr2=[1,2,3,4,2]; var arr3=Array.from(new Set(arr2)); arr3;//(4) [1, 2, 3, 4] //更简洁 [...new Set(arr2)]; //(4) [1, 2, 3, 4] //数组转为set数据结构 var b=[1,4,5,6,8]; let s5=new Set(b); //Set(5) {1, 4, 5, 6, 8}
循环 for of
var s4=new Set([5,8,1,9,3]); for(let v of s4.entries()){ //values(); entries()键值对 [5,5] [8,8]... console.log(v); //[5,8,1,9,3] } s4.forEach((value,key)=>{ })