zoukankan      html  css  js  c++  java
  • js 可迭代对象

    作用:可以简化使用循环语句初始化一个变量记录迭代位置的操作
    
    
    function createIterator(iterms) {
      let i = 0
      return {
        next() {
          let done = (i >= iterms.length)
          let value = !done ? iterms[i++] : undefined
          return {
            done,
            value
          }
        }
      }
    }
    
    let arrayIterator = createIterator([1, 2, 3])
    
    console.log(arrayIterator.next()) // { done: false, value: 1 }
    console.log(arrayIterator.next()) // { done: false, value: 2 }
    console.log(arrayIterator.next()) // { done: false, value: 3 }
    console.log(arrayIterator.next()) // { done: true, value: undefined }
    

      

    es6:
    function *createIterator() {
      yield 123;
      yield 'someValue'
    }
    
    let someIterator = createIterator()
    
    console.log(someIterator.next()) // { value: 123, done: false }
    console.log(someIterator.next()) // { value: 'someValue', done: false }
    console.log(someIterator.next()) // { value: undefined, done: true }
    
    创建可迭代对象
    let collection = {
      items: [11,22,33],
      *[Symbol.iterator]() {
        for (let item of this.items){
          yield item
        }
      }
    }
    
    console.log(isIterator(collection)) // true
    
    for (let item of collection){
      console.log(item) // 11 22 33
    }
    

      

  • 相关阅读:
    面向对象———类
    二维数组简单使用
    数组——算法
    第6章 约束满足问题CSP
    第5章 对抗搜索
    第4章 超越经典的搜索
    140303 命令行选项 ccf
    150904 高速公路 ccf
    170304 地铁修建 ccf
    vector容器
  • 原文地址:https://www.cnblogs.com/smzd/p/11799699.html
Copyright © 2011-2022 走看看