javascript集合的使用 new Set()使用

 集合的本质是一个对象,然后他可以转化成数组,身上的一些方法可以快速帮我们解决一些问题

        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,'并集');
         //  打印结果: ['路飞', '索隆', '娜美', '乌索普', '山贼王', '海军王', '海贼王', '近海之王'] '并集'

你可能感兴趣的:(javascript,前端)