资讯专栏INFORMATION COLUMN

迭代器模式

remcarpediem / 1978人阅读

摘要:实现一个内部迭代器可以看出内部迭代器在调用的时候非常简单使用者不用关心迭代器内部实现的细节但这也是内部迭代器的缺点。两数组不等外部迭代器将遍历的权利转移到外部两数组相等两数组相等

实现一个内部迭代器
    function each(arr,fn){
      for(let i =0; i

可以看出内部迭代器在调用的时候非常简单, 使用者不用关心迭代器内部实现的细节, 但这也是内部迭代器的缺点。比如要比较两数组是否相等, 只能在其回调函数中作文章了, 代码如下:

    function each(arr, fn) {
      for (let i = 0; i < arr.length; i++) {
        fn(i, arr[i])
      }
    }
    const compare = function (arr1, arr2) {
      var isTrue = 1
      each(arr1, function (i, n) {
        if (arr2[i] !== n) {
          console.log("两数组不相等")
          isTrue = 2
          return
        }
      })
      if (isTrue == 1) {
        console.log("两数组相等")
      }

    }
    const arr1 = [1, 2, 3]
    const arr2 = [1, 2, 4]
    compare(arr1, arr2)//两数组不相等
实现一个外部迭代器

相较于内部迭代器, 外部迭代器将遍历的权利转移到外部, 因此在调用的时候拥有了更多的自由性, 不过缺点是调用方式较复杂。

  const iterator = function(arr){
      let current = 0
      const next = function(){
        current = current + 1
      }
      const done = function(){
        return current >= arr.length
      }
      const value = function(){
        return arr[current]
      }
      return {
        next,
        done,
        value
      }
    }
    const arr1 = [1,2,3]
    const arr2 = [1,2,3]
    const iterator1 = iterator(arr1)
    const iterator2 = iterator(arr2)
    const compare = function(iterator1,iterator2){
      while(!iterator1.done()&&!iterator2.done()){
        if(iterator1.value() !== iterator2.value()){
          console.log("两数组不等")
          return
        }
        iterator1.next()  //外部迭代器将遍历的权利转移到外部
        iterator2.next()
      }
      console.log("两数组相等")
    }
    compare(iterator1,iterator2) //两数组相等

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/106616.html

相关文章

  • Python进阶:设计模式迭代模式

    摘要:抓住了迭代器模式的本质,即是迭代,赋予了它极高的地位。输出结果输出结果小结迭代器模式几乎是种设计模式中最常用的设计模式,本文主要介绍了是如何运用迭代器模式,并介绍了模块生成迭代器的种方法,以及种生成迭代器的内置方法。 showImg(https://segmentfault.com/img/bVbmv7W?w=4272&h=2848); 在软件开发领域中,人们经常会用到这一个概念——设...

    pubdreamcc 评论0 收藏0
  • Python进阶:设计模式迭代模式

    摘要:抓住了迭代器模式的本质,即是迭代,赋予了它极高的地位。输出结果输出结果小结迭代器模式几乎是种设计模式中最常用的设计模式,本文主要介绍了是如何运用迭代器模式,并介绍了模块生成迭代器的种方法,以及种生成迭代器的内置方法。 showImg(https://segmentfault.com/img/bVbmv7W?w=4272&h=2848); 在软件开发领域中,人们经常会用到这一个概念——设...

    sherlock221 评论0 收藏0
  • 迭代模式

    摘要:迭代器模式的结构抽象容器一般是一个接口,提供一个方法,例如中的接口,接口,接口等。假如我们要实现一个这样的新的容器,当然也需要引入迭代器模式,给我们的容器实现一个迭代器。 定义:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。 类型:行为类模式。 类图:showImg(https://segmentfault.com/img/bVWQIQ?w=542&h=287);...

    xcc3641 评论0 收藏0
  • 每天一个设计模式·迭代模式

    摘要:迭代器模式原文地址更多设计模式系列教程更多免费教程博主按每天一个设计模式旨在初步领会设计模式的精髓,目前采用靠这吃饭和纯粹喜欢两种语言实现。迭代器模式常见和常用的有内部迭代器外部迭代器倒序迭代器等等。 迭代器模式·原文地址 更多《设计模式系列教程》 更多免费教程 博主按:《每天一个设计模式》旨在初步领会设计模式的精髓,目前采用javascript(靠这吃饭)和python(纯粹喜欢...

    沈俭 评论0 收藏0

发表评论

0条评论

remcarpediem

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<