目录
一、Set集合
是一种数据结构,结构类似于数组,且没有重复的值。主要用于数组去重,字符串去重
1、操作方法
(1)add()
添加值,返回Set本身
let set = new Set();
//是以value:value的格式存放数据,键就是值,值就是键
set.add(1);
set.add(2);
set.add(3);
//第二种方式,两种方法输出的一致
// set.add(1)
// .add(2)
// .add(2)
// .add(3)
console.log(set);
console.log([...set]);//将set1转化为数组输出
//输出:Set(3) { 1, 2, 3 }
// [ 1, 2, 3 ]
(2)delate()
删除值,并返回一个Boolean表示是否删除成功
let set = new Set();
set.add(1);
set.add(2);
set.add(3);
// set.add(1)
// .add(2)
// .add(2)
// .add(3)
console.log(set);
console.log([...set]);//将set1转化为数组输出
// set.delete(2);
let flag = set.delete(2)
console.log(flag)
console.log(set);
//输出: Set(3) { 1, 2, 3 }
// [ 1, 2, 3 ]
// true
// Set(2) { 1, 3 }
(3)has()
判断该值是否存在,并安徽一个Boolean
let set = new Set();
set.add(1);
set.add(2);
set.add(3);
// set.add(1)
// .add(2)
// .add(2)
// .add(3)
console.log(set);
console.log([...set]);//将set1转化为数组输出
// set.delete(2);
let flag = set.delete(2)
console.log(flag)
console.log(set);
let f = set.has(3);//集合中是否存在3这个元素
console.log(f)
//输出: Set(3) { 1, 2, 3 }
// [ 1, 2, 3 ]
// true
// Set(2) { 1, 3 }
// true
(4)clear()
清除所有值,没有返回值
let set = new Set();
set.add(1);
set.add(2);
set.add(3);
// set.add(1)
// .add(2)
// .add(2)
// .add(3)
console.log(set);
console.log([...set]);//将set1转化为数组输出
// set.delete(2);
let flag = set.delete(2)
console.log(flag)
console.log(set);
let f = set.has(3);//集合中是否存在3这个元素
console.log(f)
set.clear()//清除集合中的所有元素
console.log(set)
//输出: Set(3) { 1, 2, 3 }
// [ 1, 2, 3 ]
// true
// Set(2) { 1, 3 }
// true
// Set(0) {}
二、遍历方法
(1)由于set只有键值没有键名,也可以说键和值是同一个,所以keys和values返回值相同
let set = new Set();
set.add(1);
set.add(2);
set.add(3);
for(const key of set.keys()){//keys()返回集合所有的键(key)
console.log(key);
}
for(const val of set.values()){//valuse()返回的是集合中所有的键(key)所对应的值(value)
console.log(val)
}
//输出: 1 2 3
//输出: 1 2 3
(2)forEach()
let set = new Set();
set.add(1);
set.add(2);
set.add(3);
set.add('一二三四五').add('上山打老虎');//键值对方式存贮,但键和值是一样的
set.forEach(function(key,value){
console.log(`${key}:${value}`)
})
//输出:1:1
// 2:2
// 3:3
// 一二三四五:一二三四五
// 上山打老虎:上山打老虎
(3)set可以接受一个数组作为参数
let arr = ['小明','小红','小强'];
let set2 = new Set(arr);//作为初始化的参数传给set集合
console.log(...set2)
console.log(set2)
//输出: 小明 小红 小强
// Set(3) { '小明', '小红', '小强' }
(4)set实现并集和交集
let a =[4,5,6];
let b = [5,6,7];
let setA = new Set(a);
let setB = new Set(b);
let bj = new Set([...setA,...setB])//并集
console.log(bj)
let js = new Set([...setA].filter(function(val){
//交集 : ...setA先遍历steA,filter()过滤器,有就返回,没有就过滤掉,回调函数
return setB.has(val);
}))
console.log(js)
//输出: Set(4) { 4, 5, 6, 7 }
// Set(2) { 5, 6 }