zoukankan      html  css  js  c++  java
  • ES6之Set

    const s=new Set();
    [2,3,4,2,3,4,5,6,2,3,3].forEach(x=>s.add(x))
    console.log(s);
    for(let i of s){
    console.log(i)
    }
    console.log(s.add(9)); //add(value),添加某个值,返回Set结构本身
    console.log(s.delete(2)); //删除某个值,返回一个布尔值,表示是否删除成功
    console.log(s.has(2)); //返回一个布尔值,表示该值是否为set成员
    console.log(s.clear()); //清楚所有成员,没有返回值
    console.log(s);

    //总结:ES6提供的新的数据结构Set.类似于数组,但是成员的值都是唯一的。set本身是一个构造函数,用来生成Set数据结构
    //上面代码通过add()方法向Set结构加入成员,结果表明Set结构不会添加重复的值

    // 去除数组重复成员
    const list=[1,2,1,5,2,4,6,2,3,1,]
    console.log([...new Set(list)]);
    // 去除字符串里面的重复字符
    
    const str='gdfgdgdgarwefgsfsdf';
    console.log([...new Set(str)]) //["g", "d", "f", "a", "r", "w", "e", "s"]
    console.log([...new Set(str)].join('')) //gdfarwes

    //Object和Set在判断是否包含一个键上的写法不同

    //对象的写法
    const properties={
    'weight':1,
    'height':1
    };
    if(properties['weight']){
    //......
    }
    //Set的写法
    const properties1=new Set();
    properties1.add('width')
    properties1.add('height')
    if(properties1.has('weight')){
    //.....
    }
    
    
    //这又提供了一种数组去重的方法
    function dedupe(array){
    return Array.from(new Set(array))
    }
    dedupe([11,1,2,3,2,3,4,5,3])
    //Array.from方法可以将Set结构转为数组
    const items=new Set([1,2,3,4,5,4,3,2])
    console.log(items); //Set结构是entries键值对
    const array=Array.from(items)
    console.log(array); [1,2,3,4,5]
    // 遍历操作---四个
    let set=new Set(['red','green','blue'])
    for(let item of set.keys()){
    console.log(item); //red green blue
    }
    for(let item of set.values()){
    console.log(item); //red green blue
    }
    for(let item of set.entries()){
    console.log(item); //(2) ["red", "red"] (2) ["green", "green"] (2) ["blue", "blue"]
    }

    // 总结---因为Set结构没有键名,只有键值,或者说键名和键值一样,所以keys和values方法的行为完全一致
    // Set结构的实力默认可遍历,它的默认遍历器生成函数就是它的values方法

    //forEach()
    let aa=new Set([1,24,9])
    set.forEach((value,key)=>console.log(key +':' +value))
    //11
    //24:24
    //9:9

    //遍历

    // 拓展运算符(...)内部使用for...of 循环,所以也可以用于Set结构;map 和filter 也可间接用于Set
    // 去除数组重复成员
    const list1=[1,2,1,5,2,4,6,2,3,1,]
    console.log([...new Set(list1)]);
    //map 
    let bb=new Set([1,2,3])
    bb =new Set([...bb].map(x=>x*2))
    console.log(bb); //返回Set结构
    //filter
    let cc=new Set([1,6,10])
    cc= new Set([...cc].filter(x=>(x%2)==0))
    console.log(cc);

     //注意:向Set加入值得时候,不会发生类型转变,所以5和'5'是两个不同的值;

    // Set内部判断两个值是否相同,使用的算法类似于全等于运算符,主要的区别是向Set加入值时认为NaN等于自身,而全等于不认为。
    // 两个空对象也会被视为两个值

  • 相关阅读:
    大数据入门,到底要怎么学习大数据?
    大数据
    将JWT与Spring Security OAuth结合使用
    使用OAuth保护REST API并使用简单的Angular客户端
    自定义Spring Security的身份验证失败处理
    Spring Security方法级别授权使用介绍
    Nginx高并发配置思路(轻松应对1万并发量)
    Spring Security 5中的默认密码编码器
    Spring Boot Security配置教程
    Spring Security在标准登录表单中添加一个额外的字段
  • 原文地址:https://www.cnblogs.com/linm/p/13640081.html
Copyright © 2011-2022 走看看