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]

     
     
  • 相关阅读:
    [模板] 循环数组的最大子段和
    [最短路][几何][牛客] [国庆集训派对1]-L-New Game
    [洛谷] P1866 编号
    1115 Counting Nodes in a BST (30 分)
    1106 Lowest Price in Supply Chain (25 分)
    1094 The Largest Generation (25 分)
    1090 Highest Price in Supply Chain (25 分)
    树的遍历
    1086 Tree Traversals Again (25 分)
    1079 Total Sales of Supply Chain (25 分 树
  • 原文地址:https://www.cnblogs.com/linxim/p/11766022.html
Copyright © 2011-2022 走看看