zoukankan      html  css  js  c++  java
  • ES6中对Set解析

    1.set基础

    (1)set类似数组 只有值value 没有键key

    (2)有iterable接口:数组,arguments,元素集合,SET,MAP,字符串

    (3)会默认去重
      function fn(){
                console.log(new Set(arguments))
            }
            fn(1,2,3,4);

    答案:

     add 增加 返回值增加后的set实例(可以实现链式写法)

    参数一次加一个

    let set1=new Set([1,2,"哈哈",null,NaN,true]);
            console.log(set1.add(10).add(100));
    答案:
    delete 删除 返回值是 true/false 如果里面有这一项就删除成功,没有此项就删除失败。
    let set1=new Set([1,2,"哈哈",null,NaN,true]);
            console.log(set1.add(10).add(100));
        console.log(set1.delete(1));
    clear 清空 没有返回值 undefined,没有参数 
     let set1=new Set([1,2,"哈哈",null,NaN,true]);
       console.log(set1.clear());
            console.log(set1);
    has 判断有没有此项 返回值true/false
       let set2=new Set([1,2,"哈哈",null,NaN,true]);
            console.log(set2.has(NaN));
    forEach()遍历  
    currentValue  必需。当前元素
    index  可选。当前元素的索引值。
    arr  可选,当前元素所属的数组对象
    set2.forEach((item,index,input)=>{
    console.log(item,index,input);
    //Set 实例只有value没有key
    //item,index:当前项 //input:当前实例
    })
     
     
      for(let [item,val] of set2.entries()){
                //item,val 全是value值
                console.log(item,val);
            }
     
     

    2.代码练习

       let arr1=[1,3,5,7,8,9];
            let arr2=[2,4,6,7,8,9];
            //并集
            function add(arr1,arr2){
                return [...new Set([...arr1,...arr2])]
            }

    [1, 3, 5, 7, 8, 9, 2, 4, 6]

    let arr1=[1,3,5,7,8,9];
        let arr2=[2,4,6,7,8,9];
            //交集
            function same(arr1,arr2){
                return arr1.filter(item=>arr2.includes(item))
            }
            console.log(same(arr1,arr2));

    [7, 8, 9]

        let arr1=[1,3,5,7,8,9];
            let arr2=[2,4,6,7,8,9];
    //差集  (并集-交集)
    //includes() 方法用来判断一个数组是否包含一个指定的值,如果是返回true,否则false
            function diff(arr1,arr2){
               return add(arr1,arr2).filter(item=>
                    !same(arr1,arr2).includes(item))
            }
            console.log(diff(arr1,arr2));

    [1, 3, 5, 2, 4, 6]

     
     
  • 相关阅读:
    因为数据库无法大写循环所有要使用shell
    mysql动态扩容调研
    MySQL扩容
    数据库死锁及解决死锁问题
    SQL数据库常见故障及解决方法
    通过Ajax方式上传文件(input file),使用FormData进行Ajax请求
    Ajax方式上传文件
    高并发解决方案--负载均衡
    对TCP/IP协议的深入浅出总结
    常用的php开发工具有哪些?
  • 原文地址:https://www.cnblogs.com/linxim/p/11766022.html
Copyright © 2011-2022 走看看