• ES6的Set数据结构去重复元素、求并集、交集、差集


    和Map区别

    Set是一种叫做集合的数据结构,Map是一种叫做字典的数据结构。集合、字典都可以存储不重复的值,集合是以[值,值]的形式存储元素,字典是以[键,值]的形式存储。

    用法一

    var set = new Set([1, 2, 3, 4, 2, 8, 4]); //两个2   
    for (var elem of set) {   
      console.log(elem)   // 输出结果 1 2 3 4 8
    }   

    用法二结合.map遍历和for循环

    var set = new Set();   
    [1, 2, 3, 4, 2, 8, 4].map(function (elem) {   
      set.add(elem);   //遍历完用add添加至set数组中
    })   
    for (let elem of set) { //利用for...of循环遍历出来   
      console.log(elem)   
    }   

    扩展运算符

    var set = new Set([1, 2, 3, 4, 2, 8, 4]);   
    var arr = [...set];//扩展运算符(…)内部使用for…of循环,   
    console.log(arr);   // 输出 [1,2,3,4,8] 

    清空、删除

    var set = new Set([1, 2, 3, 4, 2, 8, 4]);   
    // set.clear(); //清空  直接就清空掉所有元素  
    set.delete(8); //删除  选中元素 
    var arr = [...set]; //扩展运算符(…)内部使用for…of循环,      
    console.log(arr);    //上面删除了8 输出结果为 [1,2,3,4] 

    判断set中是否含有

    console.log(set.has(8));  //有就返回true 没有返回false

    判断set中长度

    console.log(set.size); 

    求并集、交集、差集

    并集

      let a = new Set([1, 2, 3]);  
        let b = new Set([4, 3, 2]);  
       
       let union = new Set([...a,...b]); // 把上面两个对象合到一个数组中通过扩展运算符(…)内部使用for…of循环遍历出来最后通过Set去重复就可以输出了
       console.log([...union]); //输出交集结果 [1,2,3,4]

    交集

    let a = new Set([1, 2, 3]);  
        let b = new Set([4, 3, 2]); 

    let intersect = [...a].filter(function(elem){ //把a对象遍历出来 return b.has(elem); //把遍历出来的对象通过has判断是否与a一样,最后把一样的给返回 }); console.log(intersect); //输出结果 [2,3]

    差集

      let a = new Set([1, 2, 3]);  
        let b = new Set([4, 3, 2]);  
    
       let difference  = [...a].filter(function(elem){
          return !b.has(elem);  //b的差集为1  首先Set已经去掉了重复的,has去掉了相同的,!取反那就是a里面b没有的,也就是差集,概念上的东西
       });
       console.log(difference); //输出结果 [1]
    注意  用set处理后是set的对象形式  要转成数组使用需要 使用 Array.from(new Set([1,1,2,2,3])) 包裹一层再使用
    或者 [...new Set([1,1,2,2,3])]
  • 相关阅读:
    下载文件
    Cookie方法
    阿拉伯数字转大写
    格式化日期
    正向代理与反向代理
    get post 区别
    gulp
    什么是javascript中的同步&&异步?
    懒加载
    js操作dom时发生了什么?
  • 原文地址:https://www.cnblogs.com/Model-Zachary/p/6131181.html
Copyright © 2020-2023  润新知