最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解JavaScript 高階函數(shù)

 更新時間:2020年09月14日 09:12:01   作者:p8850133  
這篇文章主要介紹了JavaScript 高階函數(shù)的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)JavaScript,感興趣的朋友可以了解下

高階函數(shù)簡介

高階函數(shù) 的英文名叫 Higher-Order Function ,是 函數(shù)式編程 中的一種。他的表現(xiàn)形式往往是通過把函數(shù)作為參數(shù)傳入另一個函數(shù),或者將函數(shù)作為另一個函數(shù)的返回值返回。在實際開發(fā)業(yè)務(wù)中, 高階函數(shù)往往可以抽象我們的代碼 ,將我們的命令式編程轉(zhuǎn)換為復(fù)用性更高級的函數(shù)式編程,從而 提升我們的代碼質(zhì)量 。

下面拿3個面試中常問的高階函數(shù)舉例子,希望看完以后能夠提升大家對JS的理解,提高我們的代碼質(zhì)量。 chat is cheap,show you my code~

Array.map()

功能介紹

map() 方法返回一個新數(shù)組,數(shù)組中的元素為原始數(shù)組元素調(diào)用函數(shù)處理后的值。 map() 方法按照原始數(shù)組元素順序依次處理元素。

tips

注意: map() 不會對空數(shù)組進行檢測。 注意: map() 不會改變原始數(shù)組。

實用意義及代碼舉例

//如果我們需要將一個數(shù)組中,每一項元素全都*2,
  //最基礎(chǔ)的作法,是剛學(xué)JS時的循環(huán)遍歷,再每一項中執(zhí)行*2的操作,例如:
  let arr1 = [0,1,2,3,4,5,6];
  let arr2 = [];
  for (let i = 0;i<arr1.length;i++){
    arr2.push(arr1[i]*2)
  }
  console.log(arr2) //[0, 2, 4, 6, 8, 10, 12]
  
  //這樣確實可以達(dá)到效果,但是這屬于命令式編程;
  //換做Map高階函數(shù)的方法實現(xiàn)起來,只需要1行,復(fù)用性也會更強。
  
  let arr1 = [0,1,2,3,4,5,6];
  let arr2 = arr1.map((item)=> item*2)
  console.log(arr2) //[0, 2, 4, 6, 8, 10, 12]

總結(jié):

針對數(shù)組中每一項都要做的操作,可以實用map方法

Array.reduce()

功能介紹

reduce() 方法接收一個函數(shù)作為累加器,數(shù)組中的每個值(從左到右)開始縮減,最終計算為一個值。
reduce() 可以作為一個高階函數(shù),用于函數(shù)的 compose。

tips:

注意: reduce() 對于空數(shù)組是不會執(zhí)行回調(diào)函數(shù)的。

實用意義及代碼舉例

  //如果有一個需求,需要我們將數(shù)組中每一項求和
  //實用reduce,可以優(yōu)雅簡潔的實現(xiàn):
  let arr1 = [0,1,2,3,4,5,6];
  let arr2 = arr1.reduce((prev,cur)=>{ //prev代表之前所有項的最終結(jié)果,cur代表當(dāng)前項的值
    return prev+cur
  },0) //這里的0是初始項傳入的值,這里寫為0
  console.log(arr2) //21 求和完畢
  
  
  //reduce也可以用于數(shù)組去重
  let arr1 = [0,1,2,3,4,5,6,5,6,7,6];
  let arr2 = arr1.reduce((prev,cur)=>{
    //當(dāng)之前所有項不包含當(dāng)前項元素時,push,否則直接返回之前所有去重項。
    prev.indexOf(cur) === -1 && prev.push(cur);
    return prev
  },[]) //傳入空數(shù)組作為初始值
  console.log(arr2) //[0, 1, 2, 3, 4, 5, 6, 7]

總結(jié):

針對數(shù)組中所有的項累計計算的操作,最終輸入一個值,可以使用reduce方法

Array.filter()

功能介紹

filter() 方法創(chuàng)建一個新的數(shù)組,新數(shù)組中的元素是通過檢查指定數(shù)組中符合條件的所有元素。

tips

注意: filter() 不會對空數(shù)組進行檢測。
注意: filter() 不會改變原始數(shù)組。

實用代碼舉例

  //例如,需求為獲取數(shù)組中所有大于等于4的元素,將他們組成一個數(shù)組
  let arr1 = [0,1,2,3,4,5,6,5,6,7,6];
  let arr2 = arr1.filter((item)=>{
    return item >= 4
  },[])
  console.log(arr2) //[4, 5, 6, 5, 6, 7, 6]

總結(jié):

對于數(shù)組中每一項的篩選功能,可以使用filter方法

Array.flat()

功能介紹

flat() 方法可以將嵌套數(shù)組(多為數(shù)組)降維,變成低維數(shù)組或者一維數(shù)組。(數(shù)組攤平展開)

tips

注意: 存在一定兼容性問題,例如IE不兼容

實用代碼舉例

  
  let arr1 = [0,1,2,3,4,5,[1,2,3],[1,2,[1,2,3,4]],6,7,6];
  let arr2 = arr1.flat(1) //flat中傳入需要降維的層數(shù),默認(rèn)是1,如果有個三維數(shù)組他會被降級為二位數(shù)組,
  let arr3 = arr1.flat(Infinity) //[0, 1, 2, 3, 4, 5, 1, 2, 3, 1, 2, 1, 2, 3, 4, 6, 7, 6] //如果不管是幾維數(shù)組,需要得到1維數(shù)組的話,可以直接使用Infinity 
  console.log(arr2) //[0, 1, 2, 3, 4, 5, 1, 2, 3, 1, 2, [1,2,3,4], 6, 7, 6]

以上就是詳解JavaScript 高階函數(shù)的詳細(xì)內(nèi)容,更多關(guān)于JavaScript 高階函數(shù)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 利用JavaScript實現(xiàn)簡單3D開關(guān)書本模型

    利用JavaScript實現(xiàn)簡單3D開關(guān)書本模型

    這篇文章主要為大家詳細(xì)介紹了如何利用JavaScript實現(xiàn)簡單3D開關(guān)書本模型的效果,文中的實現(xiàn)代碼講解的非常詳細(xì),具有一定參考價值,感興趣的同學(xué)可以動手嘗試一下
    2023-11-11
  • js中創(chuàng)建對象的幾種方式示例介紹

    js中創(chuàng)建對象的幾種方式示例介紹

    JavaScript中的所有事物都是對象,本文為大家介紹下JS中創(chuàng)建對象的幾種方式,如原始方法、工廠方法等等
    2014-01-01
  • 微信小程序?qū)崿F(xiàn)上傳圖片

    微信小程序?qū)崿F(xiàn)上傳圖片

    這篇文章主要介紹了微信小程序?qū)崿F(xiàn)上傳圖片,預(yù)覽、刪除、限制圖片大小、張數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • checkbox設(shè)置復(fù)選框的只讀效果不讓用戶勾選

    checkbox設(shè)置復(fù)選框的只讀效果不讓用戶勾選

    有時候是只想告知用戶這個地方是可以進行勾選操作的而不想讓用戶在此處勾選(比如在信息展示頁面),這時候就需要將復(fù)選框設(shè)置成只讀的效果,具體實現(xiàn)方法如下
    2013-08-08
  • JavaScript調(diào)試的多個必備小Tips

    JavaScript調(diào)試的多個必備小Tips

    這篇文章主要給大家介紹了關(guān)于JavaScript調(diào)試的多個必備小Tips,文章給出了詳細(xì)的介紹與示例代碼,有需要的朋友們可以參考借鑒,下面來一起學(xué)習(xí)學(xué)習(xí)學(xué)習(xí)吧。
    2017-01-01
  • js大數(shù)相加出現(xiàn)精度丟失、運算錯誤的問題

    js大數(shù)相加出現(xiàn)精度丟失、運算錯誤的問題

    js中數(shù)字類型長度達(dá)到16位時,進行加減乘除運算,會出現(xiàn)精度丟失,運算結(jié)果錯誤的問題,本文講述精度丟失的原因及解決辦法
    2023-08-08
  • JS html事件冒泡和事件捕獲操作示例

    JS html事件冒泡和事件捕獲操作示例

    這篇文章主要介紹了JS html事件冒泡和事件捕獲操作,結(jié)合完整實例形式分析了javascript事件冒泡及事件捕獲相關(guān)原理與實現(xiàn)方法,需要的朋友可以參考下
    2019-05-05
  • 解決webpack dev-server不能匹配post請求的問題

    解決webpack dev-server不能匹配post請求的問題

    這篇文章主要介紹了解決webpack不能匹配post請求的問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • JavaScript 回車 焦點切換

    JavaScript 回車 焦點切換

    回車鍵按下時,自動以Tab鍵方式在文本輸入框之間進行焦點切換的JavaScript代碼
    2009-06-06
  • JavaScript中丟失精度的問題及避免方法

    JavaScript中丟失精度的問題及避免方法

    JavaScript?是一門動態(tài)類型的腳本語言,用于在瀏覽器中創(chuàng)建交互式的網(wǎng)頁,然而,由于其使用?IEEE?754?浮點數(shù)表示數(shù)字,可能會導(dǎo)致丟失精度的問題,本文將探討?JavaScript?中的丟失精度問題,以及如何避免這些問題,需要的朋友可以參考下
    2023-11-11

最新評論

灵台县| 繁昌县| 舒兰市| 都江堰市| 普宁市| 樟树市| 平武县| 平果县| 隆子县| 镇远县| 卓资县| 临高县| 沽源县| 历史| 南郑县| 乌苏市| 盐源县| 南投县| 皮山县| 康马县| 高邑县| 探索| 汉沽区| 牡丹江市| 瓦房店市| 大荔县| 铜鼓县| 涟源市| 中江县| 泽库县| 夏津县| 金秀| 洪雅县| 阿坝| 嘉义市| 泸溪县| 天等县| 定边县| 都江堰市| 涞水县| 婺源县|