美文网首页
ES6新增的数据类型 Set;

ES6新增的数据类型 Set;

作者: 吴高亮 | 来源:发表于2019-01-05 22:32 被阅读0次

    1:set es6新增的数据结构;类似于数组;但是它内部成员是唯一的;不具备重复的值;

    set本身是个构造函数;用来生成set数据结构;

    var s=new Set();
    [1,2,3,4,5,2,1,2].forEach(x=>s.add(x));
    for(let i of s){
    console.log(i);
    };
    1 2 3 4 5;
    上面是通过add()方法;将数据放在set方法中;表明取除了重复性;
    

    另外set也接受一组参数作为初始化;

    const set=new Set([1,2,3,4,5,5,5,5]); 
    [...set];
    //[1,2,3,4,5]
    var s = new Set([1, 2, 3, 4, 4]);
    console.log(s);
    //Set(4) {1, 2, 3, 4}
    
    
    // 去除数组的重复成员
    [...new Set(array)];
    //去除重复的字符串;
    [...new Set('abbcb')].join('');
    //abc;
    

    向 Set 加入值的时候,不会发生类型转换,所以5和"5"是两个不同的值。Set 内部判断两个值是否不同,使用的算法叫做“Same-value-zero equality”,它类似于精确相等运算符(===),主要的区别是NaN等于自身,而精确相等运算符认为NaN不等于自身。

    2 set的一些属性

    • 方法add();
    let s=new Set();
    s.add(1);
    s.add(2);
    s.add(2);
    s.size()//2;
     2 被加入了两次;但是因为完全相等所以s的长度就是2;
    

    -方法has();

    s.has(1);//true;
    s.has(3);//false;
    
    • 方法delete()
    s.delete(2);
    s.has(2);//false;
    

    总结

    add(value):添加某个值,返回 Set 结构本身。
    delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
    has(value):返回一个布尔值,表示该值是否为Set的成员。
    clear():清除所有成员,没有返回值。

    let set = new Set(['red', 'green', 'blue']);
    let arr = [...set];
    // ['red', 'green', 'blue']
    //删除重复的
    let arr = [3, 5, 2, 2, 5, 5];
    let unique = [...new Set(arr)];
    // [3, 5, 2]
    
    let a = new Set([1, 2, 3]);
    let b = new Set([4, 3, 2]);
    
    // 并集
    let union = new Set([...a, ...b]);
    // Set {1, 2, 3, 4}
    
    // 交集
    let intersect = new Set([...a].filter(x => b.has(x)));
    // set {2, 3}
    
    // 差集
    let difference = new Set([...a].filter(x => !b.has(x)));
    // Set {1}
    

    相关文章

      网友评论

          本文标题:ES6新增的数据类型 Set;

          本文链接:https://www.haomeiwen.com/subject/dchrrqtx.html