zoukankan      html  css  js  c++  java
  • ES6 迭代器

    1、可迭代对象指的是,可通过 for/of 循环的对象,是es6的特性,包括(数组,字符串,set对象,map对象)

    2、扩展操作符...可以展开可迭代对象

    let chars = [..."abcd"] // chars === ["a","b","c","d"]
    let data = [1, 2, 3, 4]
    Math.max(data) // 4

    3、迭代器可用于解构赋值

    let purple = Uint8Array.of(255, 0, 255, 128)
    let [r, g, b, a] = purple // a===128

    4、 迭代map对象,返回值是[key,value]对, 在for/of中可直接解构赋值

    let m = new Map([["one", 1], ["two", 2]])
    for (let [k, v] of m) console.log(k, v);

    5、值迭代键或值,可使用keys()或values()

    [...m]; // [["one", 1], ["two", 2]]
    [...m.entries()]; // [["one", 1], ["two", 2]]
    [...m.keys()]; // ["one","two"]
    [...m.values()]; // [1,2]

    6、可接收Array对象的内置函数和构造函数,可接收任意迭代器

    new Set("abc"); new Set(["a", "b", "c"]); // 两者相同

    7、迭代器原理

    // 可迭代对象:具有迭代器的方法,且该方法返回迭代器的对象
    let list1 = [1, 2]
    // 迭代器对象:具有next()方法,且该方法返回迭代结果的对象list
    let iterator = list1[Symbol.iterator]() //有一个Symbol.iterator方法,返回自己
    // 迭代结果:具有属性value和done的对象
    for (let result = iterator.next(); !result.done; result = iterator.next()) {
        console.log(result.value);
    }
    //
    let list2 = [1, 2, 3, 4, 5]
    let iter = list2[Symbol.iterator]()
    console.log(iter.next().value); // 1
    console.log([...iter]); // [2, 3, 4, 5]
  • 相关阅读:
    php下的jsonp使用实例
    jquery ajax jsonp跨域调用实例代码
    js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
    jsonp实现跨域访问
    jsonp调用实例
    Jsonp和java操作例子
    JSONP实例
    跨平台移动开发工具:PhoneGap与Titanium全方位比拼
    混合开发模式下主流移动开发平台分析
    企业移动信息化应用开发模式选型指南
  • 原文地址:https://www.cnblogs.com/minihong/p/14861732.html
Copyright © 2011-2022 走看看