ES6 集合 Set()
概念:一个标识符,存储多个数据(没有全等的重复值)
特点:数据不可重复(全等)
1.创建集合的方式
let set = new Set();
console.log(set); Set(0) {}
集合用{}表示
let obj = new Object();
console.log(obj); //{}
【集合的方法和属性】
2.属性
-
集合的长度
size
书写格式:
集合.size
返回值:集合存储数据的个数
console.log(set.size);
3.方法
-
添加
.add()
书写格式:
集合.add(添加的数据)
返回值:添加数据后的集合(即返回改变集合的内容)
let temp = set.add(1); console.log(temp); //返回一个集合里面存的1;
链式调用
//链式调用(全等匹配) //全等的数据,无法重复存储 set.add(1).add('a').add(1).add('b').add('1'); console.log(set); //Set(4) { 1, 'a', 'b', '1' } console.log(set.size); //4
-
删除
.delete()
书写格式:
集合.delete(删除的数据)
返回值:Boolean(删除成功返回true,反之false)
set.delete("1"); console.log(set); //Set(3) { 1, 'a', 'b' }
-
清空数组
.clear()
书写格式:
集合.clear()
set.clear(); console.log(set.size);
-
查找
.has()
书写格式:
集合.has(查找的内容)
返回值:Boolean
console.log(set.has(1)); //true console.log(set.has(0)); //false
4.遍历集合的键值对 keys values entries
证明键名键值是同一个东西
for (let item of set.entries()) {
console.log(item);
}
/*
[ 1, 1 ]
[ 'a', 'a' ]
[ 'b', 'b' ]
[ undefined, undefined ]
*/
获取键名
for(let key of set.keys() ){
console.log(key);
}
/*
1
a
b
undefined
*/
获取键值
for(let value of set.values() ){
console.log(value);
}
/*
1
a
b
undefined
*/
5.集合与数组的相互转换
集合转数组
let arr = [...set];
console.log(arr); //[ 1, 'a', 'b' ]
arr.push(undefined);
数组转集合
set = new Set(arr);
console.log(set); //Set(4) { 1, 'a', 'b', undefined }
6.使用场景(给数组去重)
let arr1 = [1,2,3,5,6,1,2,3,2,3,1,2,3,9,2,3,2,5];
let set1 = new Set(arr1);
arr1 = [...set1];
console.log(arr1); //[ 1, 2, 3, 5, 6, 9 ]
7.遍历输出键名+键值
let arr = ['A','B','C'];
for(let index in arr){
console.log(index,arr[index]);
}
/*
0 1
1 a
2 b
*/
8.随机数去重
let pcNum = new Set();
while (pcNum.size < 4) {
let = ranNum = parseInt(Math.random() * 9) + 1;
pcNum.add(ranNum);
}
console.log(pcNum);