当前位置 博文首页 > 纸飞机博客:Set(集合)

    纸飞机博客:Set(集合)

    作者:[db:作者] 时间:2021-09-11 16:45

    set是ES6提供的数据结构,是值的集合, 它类似数组,但成员的值都是唯一的。

    Set数据结构的创建

    const s1 = new Set();
    //接收参数可迭代对象(数组)初始化set
    const s2 = new Set([1,2,2,3,4]);
    console.log(s1) //Set{}
    console.log(s2) //Set{1,2,3,4}

    Set属性和原型方法

    const s1 = new Set([1,2,3,4]);
    //返回Set的值的个数
    console.log(s1.size) //4
    
    //在set尾部添加一个元素。返回该set。
    s1.add('c')
    console.log(s1); //Set{1,2, 3, 4, 'c'}
    
    //删除指定数据 ,返回一个布尔值
    var isdel = s1.delete(1)
    console.log(isdel); //true
    
    //判断该值是否为set的成员,返回布尔值
    const ishas = s1.has(1);
    console.log(ishas); //false
    
    //清除所有的数据 ,没有返回值
    sl.clear();
    console.log(sl); //Set{}
    
    //返回键名的迭代器iterator
    console.log(sl.keys());
    //Setiterator {1,2,3,4}
    
    //返回键值的迭代器iterator
    console.log(s1.values());
    //Setiterator {1,2,3,4}
    
    //返回名值对的迭代器iterator ;
    console.log(s1.entries()); ;
    //Setiterator {1 => 1,2 =>2,3 -> 3, 4 -> 4}
    //由于Set只有值,所以键名和键值是一样的。

    迭代Set

    const s = new Set([1,2,3,4]);
    //Set是可迭代对象(iterable),可以使用for of来遍历。Set内置[Symbol.iterator]是Set的
    values()方法,返回Set值的迭代器。
    for(let value of s) {
        console.log(value); //1234
    }
    // forEach。遍历,Set本身没有key, forEach方法中的key被设置成了元素本身。
    s.forEach((value, key) => {
        console.log(value, key); //11 22 33 44
    });
    // for of遍历s.entries()
    for (let v of s.entries()){
        console.log(v)
    }
    // [1,1]
    // [2,2]
    // [3,3]
    // [4,4]

    Set和Array的转换

    //数组转换成Set
    const arr =[1,2, 2,'3','3']
    let set = new Set(arr);
    console.log(set) // Set(3) {1,2,"3"}
    
    //Set转换成数组
    let set = new Set();
    set.add(1);
    set.add('2');
    console.log(Array.from(set)) // [1, "2"]

    数组去重(转化成Set)

    const arr = [1,1,'xiao','xiao',null,null]
    let set = new Set(arr);
    console.log([...set]) //[1, 'xiao', null]
    //或者
    console.log(Array.from(set)) //[1, 'xiao', null]

    cs
    下一篇:没有了