zoukankan      html  css  js  c++  java
  • ES6 Set和Map集合(六)

    一、Set集合
    创建Set实例:
    let set = new Set();
    1、特性:
    a、Set本身是一个构造函数,用来生成Set数据结构【类比数组结构
    b、Set函数可以接受具有Iterable接口的数据结构作为参数
    c、Set集合中的成员是唯一的【即不可重复

    2、Set实例的相关属性及方法
    a、属性
    Set.prototype.constructor:构造函数,默认就是Set函数
    Set.prototype.size:返回Set实例的元素的个数    【set.size

    b、方法
    add(value):添加某个值,返回Set集合本身
    delete(value):删除某个值,返回boolean类型
    has(value):返回一个布尔值,表示该值是否在集合中
    clear():清除所有成员,没有返回值

    keys()    【返回set实例中所有值组成的迭代器对象[和下面的values()是等同的]】
    values()    【返回set实例中所有值组成的迭代器对象
    entries()    【返回set实例键值对组成的迭代器对象,对象里面存放的是键值对形式的数组
    forEach(function(value,key,set){})    【使用回调函数遍历迭代器对象中的每个成员

    3、去除Array中重复的元素
    eg:
        let arr = [1,2,3,1,3];
        console.log([...new Set(arr)]);    //[1,2,3]


    二、Map集合
    创建Map实例:
    let map = new Map();
    1、特性:
    a、Map类似于对象,也是键值对的集合
    b、Map中的“键”的范围不限于字符串【Object中键的表现形式】,各种类型的值(包括对象)都可以当作键
    c、Map可以接受一个数组作为参数,该数组的成员是一个表示键值对的数组【可以接受一个二维数组:entries(obj)

    2、Map实例的相关属性及方法
    a、属性
    Map.prototype.size    返回Map实例的元素的个数 【map.size

    b、方法
    set(key, value)        【添加或更新对应key的value值,返回Map集合自身】(集合有key值,更新;没有,添加)
    get(key)    【获取key对应的value值,如果找不到key,返回undefined
    has(key)    【has方法返回一个布尔值,表示某个键是否在当前Map对象之中
    delete(key)    【删除key的元素,返回boolean类型
    clear()    【清除所有成员,没有返回值】clear()


    keys()    【返回集合中所有键名组成的迭代器对象
    values()    【返回集合中所有键值组成的迭代器对象
    entries()    【返回集合中所有键值对数组组成的迭代器对象
    forEach(function(value,key,Map){})    【使用回调函数遍历迭代器对象中的每个成员

    三、Iterator (遍历器)
    1、特性:
    a、Iterator是一种接口,为各种不同的数据结构,提供统一的访问机制
    b、任何数据结构只要部署Iterator接口,就可以完成遍历操作

    2、作用:
    a、为各种数据结构,提供一个统一的、简便的访问接口
    b、使得数据结构的成员能够按某种次序排列
    c、Iterator接口主要供ES6中的新的遍历命令for...of循环使用

    3、Iterator 的遍历过程
    a、迭代器对象调用next()方法依次获取到对象中的下一个元素遍历对象,并返回一个对象{value:element,done:boolean}
    b、a中返回的对象value为获取的元素,done为下一个元素是否存在,若对象下一个元素不存在则{ value: undefined, done: true }
    eg:    

        var set = new Set(['nzc',18]);
        let entries = set.entries();
        console.log(entries.next());    //{ value: [ 'nzc', 'nzc' ], done: false }
        console.log(entries.next());    //{ value: [ 18, 18 ], done: false }
        console.log(entries.next());    //{ value: undefined, done: true }


    4、获取Iterator对象
    var iterator = iterObj[Symbol.iterator]();

    5、原生具备 Iterator 接口的数据结构
    Array    【数组】
    String    【字符串】
    函数的arguments对象    【函数参数组成的类数组对象】
    NodeList对象    【元素节点类数组对象】
    Map    【Map集合】
    Set    【Set集合】
    TypedArray 【二进制数据缓存区的一个对象】


  • 相关阅读:
    冒泡排序
    pdo 单例类
    php 事物处理
    支付宝支付
    反向代理和负载均衡
    execl导出
    网络层
    OSI 7层 TCP/IP 4层 综合5层
    面试总结
    CMD AMD
  • 原文地址:https://www.cnblogs.com/nzcblogs/p/11363123.html
Copyright © 2011-2022 走看看