摘要:實現一個內部迭代器可以看出內部迭代器在調用的時候非常簡單使用者不用關心迭代器內部實現的細節但這也是內部迭代器的缺點。兩數組不等外部迭代器將遍歷的權利轉移到外部兩數組相等兩數組相等
實現一個內部迭代器
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) //兩數組相等
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/106616.html
摘要:抓住了迭代器模式的本質,即是迭代,賦予了它極高的地位。輸出結果輸出結果小結迭代器模式幾乎是種設計模式中最常用的設計模式,本文主要介紹了是如何運用迭代器模式,并介紹了模塊生成迭代器的種方法,以及種生成迭代器的內置方法。 showImg(https://segmentfault.com/img/bVbmv7W?w=4272&h=2848); 在軟件開發領域中,人們經常會用到這一個概念——設...
摘要:抓住了迭代器模式的本質,即是迭代,賦予了它極高的地位。輸出結果輸出結果小結迭代器模式幾乎是種設計模式中最常用的設計模式,本文主要介紹了是如何運用迭代器模式,并介紹了模塊生成迭代器的種方法,以及種生成迭代器的內置方法。 showImg(https://segmentfault.com/img/bVbmv7W?w=4272&h=2848); 在軟件開發領域中,人們經常會用到這一個概念——設...
摘要:迭代器模式原文地址更多設計模式系列教程更多免費教程博主按每天一個設計模式旨在初步領會設計模式的精髓,目前采用靠這吃飯和純粹喜歡兩種語言實現。迭代器模式常見和常用的有內部迭代器外部迭代器倒序迭代器等等。 迭代器模式·原文地址 更多《設計模式系列教程》 更多免費教程 博主按:《每天一個設計模式》旨在初步領會設計模式的精髓,目前采用javascript(靠這吃飯)和python(純粹喜歡...
閱讀 516·2021-10-09 09:44
閱讀 2091·2021-09-02 15:41
閱讀 3555·2019-08-30 15:53
閱讀 1834·2019-08-30 15:44
閱讀 1290·2019-08-30 13:10
閱讀 1196·2019-08-30 11:25
閱讀 1462·2019-08-30 10:51
閱讀 3367·2019-08-30 10:49