国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

.map() vs .forEach() vs for() 如何選擇?

iliyaku / 509人閱讀

摘要:但是總是會被很多朋友說,這些人認為的速度要比快一點。如果你想用函數(shù)式編程寫個鏈式表達式來裝個逼,將會是你不二的選擇。來看下面這個例子鏈式風格接不起來,斷了最后根據(jù)上面的代碼,大家應該了解到跟的局限。

訪問原文地址

.map() vs .forEach() vs for()

筆者說,自己基本沒怎么用過for()來遍歷,主要是用.forEach()

但是總是會被很多朋友說,這些人認為for()的速度要比.forEach()快一點。(其實這根本沒有根據(jù),下面會講)

速度當然是很重要的,但是我們也需要從其他方面考慮一下,特別是代碼資源。

這里有一篇很棒的文章,很好的分析了for()遍歷。它同時也針對for()遍歷和.forEach()做了比對[測試](https://jsperf.com/for-vs-foreach/37)。for().forEach()`相比會消耗更多的內存。

這樣,又回到了老問題,是用空間換速度,還是反之?

當然,都很重要。首先,這2個方面都不會成為你代碼中的瓶頸問題。其次,那些小小的優(yōu)化技巧也不會很好的平衡這2個問題,只會增加你的工作量而已。那我在來看下可讀性、可控性、以及可維護性之間的對比呢。

讓我們先來看個基本的sample

比如這個數(shù)組

var arr = [1, 2, 3];

.map():

arr.map(fcuntion(i) {
    console.log(i);
})

43個字母

.forEach():

arr.forEach(function(i){
    console.log(i)
})

47個字母

for()

for(var i=0,l=arr.lengrh;i

70個字母

.map().forEach()明顯要簡短一些,并且他們的可讀性更強,同時他們也創(chuàng)建了各自的scope,而for()在執(zhí)行完遍歷之后會把il這兩個元素掛起來,這讓我們需要手動增加一些代碼去清除他們所占用的內存。

所以,這時候可以告訴你的朋友:

.forEach()或者.map()

.map() vs .forEach()

那么接下來,我繼續(xù)做分析,為什么更推薦用.map(),而不是.forEach()?

首先,.map()要比.forEach()執(zhí)行速度更快。雖然我也說過執(zhí)行速度不是我們需要考慮的主要因素,但是他們都比for()要更好用,那肯定要選更優(yōu)化的一個。

第二,.forEach()的返回值并不是array。如果你想用函數(shù)式編程寫個鏈式表達式來裝個逼,.map()將會是你不二的選擇。

來看下面這個例子:

var arr = [1, 2, 3];

console.log(
    arr.map(function(i){
        return i+i;
    })
    //鏈式風格
    .sort()
);// [2,4,6]

console.log(
    arr.forEach(function(i){
        return i+i;
    })
    //接不起來,斷了
    .sort()
);//TypeError: Cannot read property "sort" of undefined
最后

根據(jù)上面的代碼,大家應該了解到.forEach().map()的局限。

最后,感謝大家耐心的閱讀,排個序

.map() > .forEach() > for()

英文原文

https://ryanpcmcquen.org/javascript/2015/10/25/map-vs-foreach-vs-for.html

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

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/91156.html

相關文章

  • for...in VS. for...of

    摘要:在種和一樣都具有遍歷數(shù)組的功能,但是他們的返回結果并不相同,使用遍歷數(shù)組時,無法使用中斷循環(huán),也無法使用中斷,當然使用也不能返回到外層函數(shù)。枚舉對象循環(huán)不支持普通對象,如果想迭代一個對象的屬性,可以使用內建的方法使用方法獲取對象的數(shù)組 先看下面這兩種寫法:1. tabList.forEach((tab, i) => { if (tab.is_main) { th...

    Anchorer 評論0 收藏0
  • JavaScript中MapForEach的區(qū)別

    摘要:示例下方提供了一個數(shù)組,如果我們想將其中的每一個元素翻倍,我們可以使用和來達到目的。注意,是不會返回有意義的值的。允許更改原始數(shù)組的元素。自從年雙十一正式上線,累計處理了億錯誤事件,得到了金山軟件等眾多知名用戶的認可。 譯者按: 慣用Haskell的我更愛map。 原文: JavaScript?—?Map vs. ForEach - What’s the difference bet...

    charles_paul 評論0 收藏0
  • Java 8 vs. Scala(二):Stream vs. Collection

    摘要:比如對一個數(shù)據(jù)流進行過濾映射以及求和運算,通過使用延后機制,那么所有操作只要遍歷一次,從而減少中間調用。這里需知道中的元素都是延遲計算的,正因為此,能夠計算無限數(shù)據(jù)流。 【編者按】在之前文章中,我們介紹了 Java 8和Scala的Lambda表達式對比。在本文,將進行 Hussachai Puripunpinyo Java 和 Scala 對比三部曲的第二部分,主要關注 Stream...

    GeekGhc 評論0 收藏0
  • js--遍歷數(shù)組和對象方法及其效率--for-forof--foreach--forin

    摘要:數(shù)組優(yōu)化版優(yōu)化版谷歌版本正式版本位優(yōu)化版火狐版本優(yōu)化版結論這是一個尷尬的結論,谷歌火狐,同樣是最新版本或許谷歌才是王道,火狐跳舞吧,顫抖吧,你也太慢了吧,以谷歌為準相對來說作為新的遍歷方法具有可觀的效率對象 數(shù)組 var arr = new Array(10000000); var arr1 = []; var arr2 = []; var arr3 =...

    ThinkSNS 評論0 收藏0

發(fā)表評論

0條評論

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