色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

詳解JavaScript 高階函數

瀏覽:69日期:2023-10-13 18:37:20

高階函數簡介

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

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

Array.map()

功能介紹

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

tips

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

實用意義及代碼舉例

//如果我們需要將一個數組中,每一項元素全都*2, //最基礎的作法,是剛學JS時的循環遍歷,再每一項中執行*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] //這樣確實可以達到效果,但是這屬于命令式編程; //換做Map高階函數的方法實現起來,只需要1行,復用性也會更強。 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]

總結:

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

Array.reduce()

功能介紹

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

tips:

注意: reduce() 對于空數組是不會執行回調函數的。

實用意義及代碼舉例

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

總結:

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

Array.filter()

功能介紹

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

tips

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

實用代碼舉例

//例如,需求為獲取數組中所有大于等于4的元素,將他們組成一個數組 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]

總結:

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

Array.flat()

功能介紹

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

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

以上就是詳解JavaScript 高階函數的詳細內容,更多關于JavaScript 高階函數的資料請關注好吧啦網其它相關文章!

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 国产ssss在线观看极品 | 韩国一级永久免费观看网址 | 国产欧美成人xxx视频 | 九九精品国产兔费观看久久 | a级日韩乱理伦片在线观看 a级特黄毛片免费观看 | 美女扒开双腿让男人爽透视频 | 宅女深夜福利视频在线 | 国产成人黄网址在线视频 | jul-179在线中文字幕 | 亚洲最大情网站在线观看 | 男人干女人的视频 | 国产一区二区三区手机在线观看 | 精品中文字幕不卡在线视频 | 免费国产视频在线观看 | 韩国免又爽又刺激激情视频 | 欧美一级一一特黄 | 亚洲一区中文字幕在线 | 国产自产v一区二区三区c | 欧美性色黄大片www 欧美性色黄大片一级毛片视频 | 亚洲a人| 国产亚洲欧美久久精品 | 精品视频自拍 | 特级毛片全部免费播放器 | 顶级毛片在线手机免费看 | aaa级精品久久久国产片 | 国产精品免费aⅴ片在线观看 | 极品色在线精品视频 | 美国一级毛片a | 欧美日韩亚洲一区二区三区在线观看 | 国产日产欧产精品精品推荐在线 | 久久性妇女精品免费 | 亚洲欧美高清在线 | 性欧美一级毛片 | 中文字幕亚洲天堂 | 亚洲一区二区三区在线 | 免费观看毛片的网站 | 美美女高清毛片视频免费观看 | 成人国产精品视频 | 久久精品亚洲乱码伦伦中文 | 国产在线精品一区二区 | 亚洲悠悠色综合中文字幕 |