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