美文网首页vue技术学习es6 语法学习Vue.js
ES6基础教程(第十三节)——Set数据结构

ES6基础教程(第十三节)——Set数据结构

作者: 多平方 | 来源:发表于2019-07-09 22:22 被阅读1次

    ​ES6新增了Set结构以及WeakSet结构,这节课就对这两种结构进行解析。

    Set结构:

    var s = new Set();

    console.log(s);

    //打印结果:Set {}

    var s = new Set([1,2,3]);

    console.log(s);

    //打印结果:Set {1, 2, 3}

    var s = new Set([1,2,3,1,2,3]);

    console.log(s);

    //打印结果:Set {1, 2, 3}

    看出规律了吧,Set结构的成员值是没有重复的,每个值都是唯一的,重复的值会自动舍去。

    现在说说 Set()的方法:add()、delete()、clear()、has()、entries()、keys()、values()、forEach()以及size属性:

    add()是Set的添加元素方法,很明显,set结构会自动忽略相同的值,只会保留一个相同的值;

    var s = new Set();

    s.add(1);

    s.add(1);

    console.log(s);

    //打印结果:Set {1}

    delete()为set的删除元素方法,删除成功返回true,删除失败返回false,在没有此元素时候会返回删除失败。

    //用数组作为参数初始化

    var s = new Set([1,2,3]);

    console.log(s);

    //打印结果:Set {1, 2, 3}

    //使用delete方法删除指定值

    s.delete(2);//结果:true

    s.delete(4);//结果:false

    console.log(s);

    //打印结果:Set {1, 3}

    clear( )方法:清除所有成员:

    //用数组作为参数初始化

    var s = new Set([1,2,3]);

    console.log(s);

    //打印结果:Set {1, 2, 3}

    s.clear();

    console.log(s);

    //打印结果:Set {}

    has()方法:判断set结构中是否含有指定的值:

    //用数组作为参数初始化

    var s = new Set([1,2,3]);

    s.has(1);//结果:true

    s.has(4);//结果:false

    entries( )方法:返回一个键值对的遍历器:

    //用数组作为参数初始化

    var s = new Set(['a','b','c']);

    s.entries();

    //结果:SetIterator {["a", "a"], ["b", "b"], ["c", "c"]}

    注意得到的结果,成员值“a”对应的键值对是[“a”,”a”],也就是说:Set结构是键名和键值是同一个值。

    keys( )方法:返回键名的遍历器。

    values( )方法:返回键值的遍历器。

    //用数组作为参数初始化

    var s = new Set(['a','b','c']);

    s.keys();

    //结果:SetIterator {"a", "b", "c"}

    s.values();

    //结果:SetIterator {"a", "b", "c"}

    我把两个函数放在一起演示,是因为上面 entries()方法的使用告诉我们,Set结构的键名和键值是同一个值,那么我们就用 Set结构提供的 keys()和 values()方法来检验一下。从得到的结果可以看出:两者确实一致。

    forEach()方法:遍历每一个成员:

    //用数组作为参数初始化

    var s = new Set(['a','b','c']);

    //使用回调函数遍历每个成员

    s.forEach(function(value,key){

    console.log(value,key)
    

    });

    //打印结果:a a

    // b b

    // c c

    使用方式跟数组的forEach一样。当然,得到的value是key的值是一样的。

    WeakSet结构:

    WeakSet结构同样不会存储重复的值,不同的是,它的成员必须是对象类型的值。(严格来说是:具有 iterable 接口的对象)

    //初始化一个WeakSet对象

    let ws = new WeakSet([{"age":18}]);

    //结果:WeakSet {Object {age: 18}}

    同样,WeakSet结构也提供了 add( ) 方法,delete( ) 方法,has( )方法给开发者使用,作用与用法跟Set结构完全一致。

    另一个不同点是:WeakSet 结构不可遍历。因为它的成员都是对象的弱引用,随时被回收机制回收,成员消失。所以WeakSet 结构不会有keys( ),values( ),entries( ),forEach( )等方法和size属性。

    公众号

    相关文章

      网友评论

        本文标题:ES6基础教程(第十三节)——Set数据结构

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