美文网首页
ES6:Set和Map数据结构

ES6:Set和Map数据结构

作者: 你看Ta好像条狗啊 | 来源:发表于2017-08-11 11:34 被阅读14次

    Set数据结构

    Set结构类似数组,但它的所有成员的值是唯一的,没有重复值。Set本身是一个构造函数,用来生成Set数据结构。

    Set实例有以下属性:
    Set.prototype.constructor: 构造函数,默认为Set函数
    Set.prototype.size: 返回Set实例的成员总数

    Set实例的四个操作方法:
    add(value):添加某个值,返回Set函数本身,重复添加同一个值无效
    delete(value):删除某个值,返回布尔值,判断该值是否删除成功
    has(value):返回布尔值,判断参数是否为该成员
    clear():清除所有成员,无返回值

    Set实例的四种遍历方法:
    keys():返回一个键名的遍历器
    values():返回一个键值的遍历器
    entries():返回一个键值对的遍历器
    forEach():使用回调函数遍历每个成员

    PS:Array.from方法可以将Set结构转为数组。 若要去除数组中的重复属性,可先用Set结构,然后转为数组结构。Set实例默认可遍历,遍历方法为values。 Set.prototype[Symbol.iterator] === Set.prototype.values

    Map数据结构

    Map结构类似对象,也是键值对的集合。但键的范围不限于字符串.

    Map实例有以下属性:
    size属性: 返回Map实例的成员总数

    let map = new Map();
    map.set('foo', true).set('bar', false);
    map.size  // 2
    

    Map结构的五种操作方法
    set(key, value):设置key所对应的值,然后返回整个Map结构, 如果key已经有值,则会覆盖掉前面的值。 因为返回的是Map本身,故可以使用链式写法( let map = new Map.set(1, 'a').set(2, 'b'); )
    get(key):返回key所对应的键值,如果找不到key,则返回undefined
    has(key):返回一个布尔值,判断参数是否为该成员
    delete(key):删除键,返回一个布尔值,判断是否成功删除
    clear():清除所有成员,无返回值

    Map结构的四种遍历方法
    keys():返回一个键名的遍历器
    values():返回一个键值的遍历器
    entries():返回一个键值对的遍历器
    forEach():遍历所有Map成员

    PS:Map转化为数组,通过使用扩展运算符(...)

    let map = new Map().set(true, 7).set({foo: 3}, ['acb']);
    [...map]  //  [[true, 7], [{foo: 3}, ['acb']]]
    

    数组转化为Map,将数组传入Map的构造函数即可

    let map = new Map([数组])
    

    Map转为对象,前提,Map中的所有键均为String型

    相关文章

      网友评论

          本文标题:ES6:Set和Map数据结构

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