美文网首页
用ts学习迭代器模式

用ts学习迭代器模式

作者: 潘杉杉_06_03 | 来源:发表于2018-11-07 20:08 被阅读63次

迭代器模式 (Iterator Pattern)

定义: 提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。

实际上 jQuery 就已经实现了迭代器 $.each

$.each([1,2,3], function(index, value) {
    console.log(index, value)
})

一般的迭代,我们至少要有2个方法,hasNext() 和 next() ,这样才做做到遍历所有对象,所以我们的迭代器接口如下:

interface Iterator<T> {
    hasNext():boolean
    next():T
}

我们实现一个数组迭代器

class ArrayIterator implements Iterator<any>{
    private arr: Array<any>
    private index: number
    constructor (arr: Array<any>) {
        this.arr = arr
        this.index = 0
    }
    hasNext() {
        if (this.index < this.arr.length) {
            return true
        }
        this.index = 0
        return false
    }
    next() {
        return this.arr[this.index++]
    }
    getIndex() {
        return this.index
    }
}

尝试迭代一个数组

let arr1 = [1,2,3,4,5]

let arrayIterator = new ArrayIterator(arr1)

while (arrayIterator.hasNext()) {
    console.log(arrayIterator.next())
}

浏览器运行结果

VM112:21 1
VM112:21 2
VM112:21 3
VM112:21 4
VM112:21 5
undefined

最后模拟实现 jQuery 的 each 方法

const arr2 = [1,2,3]
const $ = {
    each (arr:Array<any>, callback:Function) {
        let arrayIterator = new ArrayIterator(arr)
        while (arrayIterator.hasNext()) {
            callback(arrayIterator.getIndex(), arrayIterator.next())
        }
    }
}

$.each (arr2, function(index, value) {
    console.log(index, value)
})

浏览器运行结果

VM115:36 0 1
VM115:36 1 2
VM115:36 2 3
undefined

相关代码 demo09

(完)

相关文章

  • 用ts学习迭代器模式

    迭代器模式 (Iterator Pattern) 定义: 提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露...

  • 用ts学习装饰器模式

    装饰器模式 (Decorator Pattern) 假如我们需要为一家咖啡店比如星巴克写一个自动售货系统,需要定义...

  • 设计模式学习专栏九--------迭代器模式

    设计模式学习专栏九--------迭代器模式 名称 : 迭代器模式(Iterator) 价值观念: 管理良好的集合...

  • 设计模式(17) 迭代器模式

    迭代器模式 基于IEnumerable的实现 使用场景 迭代器模式的优缺点 迭代器模式 迭代器模式用于顺序访问集合...

  • 迭代器模式

    今天说一个 迭代器模式,这个是我们平时用的最多的模式 因为java 的Collection 用的就是迭代模式。 先...

  • 第5章 -行为型模式-迭代器模式

    一、迭代器模式的简介 二、迭代器模式的优缺点 三、迭代器模式的实例

  • 行为型模式:迭代器模式

    LieBrother原文:行为型模式:迭代器模式 十一大行为型模式之六:迭代器模式。 简介 姓名 :迭代器模式 英...

  • Iterator模式

    迭代器模式(Iterator模式) 定义: 迭代器(Iterator)模式,又叫做游标(Cursor)模式。 ...

  • 迭代器模式

    一、迭代器模式介绍 二、迭代器模式代码实例

  • 设计模式 | 迭代器模式及典型应用

    本文的主要内容: 介绍迭代器模式 源码分析迭代器模式的典型应用Java集合中的迭代器模式Mybatis中的迭代器模...

网友评论

      本文标题:用ts学习迭代器模式

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