成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

迭代器模式

remcarpediem / 2116人閱讀

摘要:實現(xiàn)一個內(nèi)部迭代器可以看出內(nèi)部迭代器在調(diào)用的時候非常簡單使用者不用關(guān)心迭代器內(nèi)部實現(xiàn)的細節(jié)但這也是內(nèi)部迭代器的缺點。兩數(shù)組不等外部迭代器將遍歷的權(quán)利轉(zhuǎn)移到外部兩數(shù)組相等兩數(shù)組相等

實現(xiàn)一個內(nèi)部迭代器
    function each(arr,fn){
      for(let i =0; i

可以看出內(nèi)部迭代器在調(diào)用的時候非常簡單, 使用者不用關(guān)心迭代器內(nèi)部實現(xiàn)的細節(jié), 但這也是內(nèi)部迭代器的缺點。比如要比較兩數(shù)組是否相等, 只能在其回調(diào)函數(shù)中作文章了, 代碼如下:

    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("兩數(shù)組不相等")
          isTrue = 2
          return
        }
      })
      if (isTrue == 1) {
        console.log("兩數(shù)組相等")
      }

    }
    const arr1 = [1, 2, 3]
    const arr2 = [1, 2, 4]
    compare(arr1, arr2)//兩數(shù)組不相等
實現(xiàn)一個外部迭代器

相較于內(nèi)部迭代器, 外部迭代器將遍歷的權(quán)利轉(zhuǎn)移到外部, 因此在調(diào)用的時候擁有了更多的自由性, 不過缺點是調(diào)用方式較復雜。

  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("兩數(shù)組不等")
          return
        }
        iterator1.next()  //外部迭代器將遍歷的權(quán)利轉(zhuǎn)移到外部
        iterator2.next()
      }
      console.log("兩數(shù)組相等")
    }
    compare(iterator1,iterator2) //兩數(shù)組相等

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/106616.html

相關(guān)文章

  • Python進階:設(shè)計模式迭代模式

    摘要:抓住了迭代器模式的本質(zhì),即是迭代,賦予了它極高的地位。輸出結(jié)果輸出結(jié)果小結(jié)迭代器模式幾乎是種設(shè)計模式中最常用的設(shè)計模式,本文主要介紹了是如何運用迭代器模式,并介紹了模塊生成迭代器的種方法,以及種生成迭代器的內(nèi)置方法。 showImg(https://segmentfault.com/img/bVbmv7W?w=4272&h=2848); 在軟件開發(fā)領(lǐng)域中,人們經(jīng)常會用到這一個概念——設(shè)...

    pubdreamcc 評論0 收藏0
  • Python進階:設(shè)計模式迭代模式

    摘要:抓住了迭代器模式的本質(zhì),即是迭代,賦予了它極高的地位。輸出結(jié)果輸出結(jié)果小結(jié)迭代器模式幾乎是種設(shè)計模式中最常用的設(shè)計模式,本文主要介紹了是如何運用迭代器模式,并介紹了模塊生成迭代器的種方法,以及種生成迭代器的內(nèi)置方法。 showImg(https://segmentfault.com/img/bVbmv7W?w=4272&h=2848); 在軟件開發(fā)領(lǐng)域中,人們經(jīng)常會用到這一個概念——設(shè)...

    sherlock221 評論0 收藏0
  • 迭代模式

    摘要:迭代器模式的結(jié)構(gòu)抽象容器一般是一個接口,提供一個方法,例如中的接口,接口,接口等。假如我們要實現(xiàn)一個這樣的新的容器,當然也需要引入迭代器模式,給我們的容器實現(xiàn)一個迭代器。 定義:提供一種方法訪問一個容器對象中各個元素,而又不暴露該對象的內(nèi)部細節(jié)。 類型:行為類模式。 類圖:showImg(https://segmentfault.com/img/bVWQIQ?w=542&h=287);...

    xcc3641 評論0 收藏0
  • 每天一個設(shè)計模式·迭代模式

    摘要:迭代器模式原文地址更多設(shè)計模式系列教程更多免費教程博主按每天一個設(shè)計模式旨在初步領(lǐng)會設(shè)計模式的精髓,目前采用靠這吃飯和純粹喜歡兩種語言實現(xiàn)。迭代器模式常見和常用的有內(nèi)部迭代器外部迭代器倒序迭代器等等。 迭代器模式·原文地址 更多《設(shè)計模式系列教程》 更多免費教程 博主按:《每天一個設(shè)計模式》旨在初步領(lǐng)會設(shè)計模式的精髓,目前采用javascript(靠這吃飯)和python(純粹喜歡...

    沈儉 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<