摘要:當(dāng)然也可以在外部定一個數(shù)組,然后處理后的數(shù)據(jù)到新數(shù)組來實(shí)現(xiàn)我們的目標(biāo),但整體看起來依然不是很優(yōu)雅。
眾所周知,在我們的日常編碼里,對于一些數(shù)據(jù)的迭代以及遍歷,首先想到的是for循環(huán)
這沒毛病,for循環(huán)編寫語法很簡單,只需要知道數(shù)據(jù)列表的長度即可進(jìn)行遍歷取值,舉個例子:
有點(diǎn)編程基礎(chǔ)的童鞋,都可以很快想到上面的編寫方法。那不知道大家是否會跟我一樣對于寫for循環(huán)時,功能是沒毛病,但編寫起來總會覺得很不優(yōu)雅,例如還要定義對應(yīng)的i變量(拿上述舉例)以及還要自主控制i變量的變化,這樣無疑會變得繁瑣起來,也會讓我們編寫代碼效率有所下降
好了,那我們有沒有一些優(yōu)雅的方法處理上述案例呢?答案是肯定的,這就回到這篇文章的主題:如何優(yōu)雅地改善for循環(huán)
ForEach相信學(xué)過ES6的童鞋,很快就會想到這種方法,下面我就拿上面的例子改造一下:
這種方式,看起來優(yōu)雅了許多,省去了不必要的隊(duì)列長度對比變量的定義和控制以及隊(duì)列長度判斷
到這里,ForEach是不是就是最好的優(yōu)雅方案?有沒有存在問題?,相信一部分童鞋未必能答出來,那我就不賣關(guān)子了。如果我們遇到一種情況,就是對列表遍歷處理后,需要返回一個處理后的數(shù)組,那我們繼續(xù)使用forEach是否能夠達(dá)到我們的目的呢?我們也許會有以下做法:
可以看到,第一種處理是希望處理完后直接賦值給一個變量,然而forEach循環(huán)返回的是undefined,第二種處理雖然最終的確能夠達(dá)到我們目標(biāo),拿到處理完的數(shù)據(jù),卻導(dǎo)致了一個問題--全局變量的污染。當(dāng)然也可以在外部定一個數(shù)組,然后push處理后的數(shù)據(jù)到新數(shù)組來實(shí)現(xiàn)我們的目標(biāo),但整體看起來依然不是很優(yōu)雅。
那有木有一種方法能夠返回一個新數(shù)組,并且又不會影響到原來的數(shù)據(jù)呢?答案是肯定的,這就要提到強(qiáng)大的Functional Programing(簡稱FP)
Functional ProgramingFP是什么?又是用來干什么的?
Functional programmings(FP) means coding in functions
這是比較簡潔和官方的說法,那是什么意思?簡單地說,就是,用函數(shù)的方式處理問題,今天就會用到它的其中一個核心思想:純函數(shù)(對于相同的輸入,永遠(yuǎn)得到相同的輸出,而且不會有任何的副作用)
看到這里是不是有點(diǎn)頭緒了
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/98467.html
摘要:近期看了好多函數(shù)式編程以及設(shè)計模式的書和文章,于是想分享一些讓代碼更優(yōu)雅的小技巧。事實(shí)上,不僅是數(shù)學(xué)運(yùn)算,任何函數(shù)式的方法都有可緩存性,這是函數(shù)式編程的一個明顯的優(yōu)點(diǎn)解構(gòu)嵌套數(shù)組這個方法和結(jié)合十分有用處。 今天翻了翻一年多前寫的代碼,感覺當(dāng)年年輕的自己寫下的代碼真是圖樣?。ㄈ欢F(xiàn)在也沒好到哪里去 /w)。近期看了好多函數(shù)式編程以及設(shè)計模式的書和文章,于是想分享一些讓JS代碼更優(yōu)雅的小技...
摘要:生成器可以簡單理解成一個函數(shù),每次執(zhí)行到語句就返回一個值,通過不停地調(diào)用這個函數(shù),就能獲取到所有的值,這些值就能構(gòu)成了一個等效的列表,但是與列表不同的是,這些值是不斷計算得出,而列表是在一開始就計算好了,這就是的思想。 python 是一門簡單而優(yōu)雅的語言,可能是過于簡單了,不用花太多時間學(xué)習(xí)就能使用,其實(shí) python 里面還有一些很好的特性,能大大簡化你代碼的邏輯,提高代碼的可讀性...
摘要:函數(shù)式編程與面向?qū)ο缶幊叹幊痰谋举|(zhì)之劍目錄編程的本質(zhì)讀到兩篇文章寫的不錯綜合摘錄一下復(fù)合是編程的本質(zhì)函數(shù)式程序員在洞察問題方面會遵循一個奇特的路線。在面向?qū)ο缶幊讨?,類或接口的聲明就是表面? 函數(shù)式編程與面向?qū)ο缶幊蘙5]:編程的本質(zhì) 之劍 2016.5.6 01:26:31 編程的本質(zhì) 讀到兩篇文章,寫的不錯, 綜合摘錄一下 復(fù)合是編程的本質(zhì) 函數(shù)式程序員在洞察問題方面會遵循...
摘要:刪除元素后,立即跳出,則正常退出,但不能向后繼續(xù)循環(huán)了刪除后立馬終端循環(huán),會正常跳出,但代價是不能繼續(xù)向后循環(huán)了使用迭代器使用迭代器可,正確無誤的刪除,代碼簡潔優(yōu)雅,推薦使用使用迭代器可,正確無誤的刪除注意這里時而不是 在工作中的許多場景下,我們都會使用到List這個數(shù)據(jù)結(jié)構(gòu),那么同樣的有很多場景下需要刪除List中的某一個元素或某幾個元素,那么我們該如何正確無誤地刪除List中的元素...
閱讀 2183·2021-11-24 09:39
閱讀 2802·2021-07-29 13:49
閱讀 2328·2019-08-29 14:15
閱讀 2244·2019-08-29 12:40
閱讀 3323·2019-08-26 13:42
閱讀 643·2019-08-26 12:13
閱讀 2077·2019-08-26 11:41
閱讀 3355·2019-08-23 18:32