集合的本质是一个对象,然后他可以转化成数组,身上的一些方法可以快速帮我们解决一些问题
let aggregate = new Set()
console.log(aggregate);
// 打印结果:Set(0) {size: 0}
let aggregate2 = new Set([1,2,3,2])//可传入一个数组,并且会自动去除重复的项
console.log(aggregate2,'aggregate2');
// 打印结果:Set(3) {1, 2, 3} 'aggregate2'
aggregate2.add(4);//新增元素
console.log(aggregate2,'添加后');
// 打印结果:Set(4) {1, 2, 3, 4} '添加后'
aggregate2.delete(1);//删除元素
console.log(aggregate2,'删除后');
// 打印结果:Set(3) {2, 3, 4} '删除后'
let result = aggregate2.has(3);//检测是否存在元素
console.log(result,'检测结果');
// 打印结果:true '检测结果'
aggregate2.clear();//删除元素
console.log(aggregate2,'清除后');
// 打印结果:Set(0) {size: 0} '清除后'
用法实践:
// 实践
let arr = ['路飞','索隆','娜美','乌索普','索隆']
let arr2 = ['山贼王','海军王','海贼王','近海之王','路飞','海军王']
// 数组去重:
let res =[...new Set(arr)]//使用...扩展运算符再在外面包一个数组括号就能转化为数组了,并且是已经去重的数组
console.log(res,'数组去重后');
// 打印结果:['路飞', '索隆', '娜美', '乌索普'] '数组去重后'
// 求两个数组的交集
let jiaoji = [...new Set(arr)].filter(item=>new Set(arr2).has(item) );
// 首先数组去重,当然不去重也行,然后过滤数组,将数组的每一项传入arr2用其身上自带的has方法检测是否包含当前项,存在就返回true,然后fitter再返回当前的符合项
console.log(jiaoji,'交集');
// 打印结果:['路飞'] '交集'
// 求两个数组的并集
let bingji = [...new Set([...arr,...arr2])]
// 首先将两个数组用扩展运算符拼接,然后得包一个数组括号,因为得传入一个数组,然后去重,再然后把他扩展数组括号包起来变成数组就行了
console.log(bingji,'并集');
// 打印结果: ['路飞', '索隆', '娜美', '乌索普', '山贼王', '海军王', '海贼王', '近海之王'] '并集'