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

資訊專欄INFORMATION COLUMN

【重溫基礎(chǔ)】JS中的常用高階函數(shù)介紹

gitmilk / 2066人閱讀

摘要:也可以直接調(diào)用內(nèi)置方法常用高階函數(shù)方法的作用是接收一個(gè)函數(shù)作為參數(shù),對(duì)數(shù)組中每個(gè)元素按順序調(diào)用一次傳入的函數(shù)并返回結(jié)果,不改變?cè)瓟?shù)組,返回一個(gè)新數(shù)組。

Ps. 晚上加班到快十點(diǎn),回來(lái)趕緊整理整理這篇文章,今天老大給我推薦了一篇文章,我從寫(xiě)技術(shù)博客中收獲到了什么?- J_Knight_,感受也是很多,自己也需要慢慢養(yǎng)成記錄博客的習(xí)慣,即使起步艱難,難以堅(jiān)持,但還是要讓自己加油加油。
前兩天把我整理的【復(fù)習(xí)資料】ES6/ES7/ES8/ES9資料整理(個(gè)人整理)要分享給大家啦。

正文內(nèi)容開(kāi)始:

1.介紹

個(gè)人簡(jiǎn)單理解為,一個(gè)函數(shù)可以接收其他函數(shù)作為參數(shù),這種函數(shù)便稱為高階函數(shù),而主要目的就是為了能接收其他函數(shù)作為參數(shù)。

Q: 為什么可以接收一個(gè)函數(shù)作為參數(shù)?   
A: 因?yàn)楹瘮?shù)可以接收變量作為參數(shù),而變量可以聲明一個(gè)方法。

簡(jiǎn)單實(shí)例:

function a (x){
    return "hi " + x;
}
function f (a, b){
    return a(b);
}
f(a, "leo");   // "hi leo"

這段代碼的意思:定義方法f,接收兩個(gè)參數(shù),方法a和變量b,在方法a中返回一段字符串,當(dāng)執(zhí)行方法f并傳入?yún)?shù)方法a和參數(shù)b的時(shí)候,返回"hi leo"

也可以直接調(diào)用JS內(nèi)置方法:

let a = 3, b = -2;
function my_abs (val, fun){
    return fun(val);
}
my_abs(a, Math.abs);  // 3
my_abs(b, Math.abs);  // 2
2.常用高階函數(shù) 2.1 map()

map()方法的作用是:接收一個(gè)函數(shù)作為參數(shù),對(duì)數(shù)組中每個(gè)元素按順序調(diào)用一次傳入的函數(shù)并返回結(jié)果,不改變?cè)瓟?shù)組,返回一個(gè)新數(shù)組
通常使用方式:arr.map(callback()),更多詳細(xì)介紹可以參考 MDN Array.map()。
參數(shù)

arr : 需要操作的數(shù)組;

callback(currentValue, index, array, thisArg) : 處理的方法,四個(gè)參數(shù);

currentValue 當(dāng)前處理的元素的

index 當(dāng)前處理的元素的索引,可選

array 調(diào)用map()方法的數(shù)組,可選

currentVthisArgalue 執(zhí)行 callback 函數(shù)時(shí)使用的 this 值,可選

返回值
返回一個(gè)處理后的新數(shù)組。

實(shí)例

let arr = [1, 3, -5];
let a1 = arr.map(Math.abs);  
// a1 => [1, 3, 5];

let a2 = arr.map(String);
// a2 => ["1", "3", "-5"]

let a3 = arr.map(function (x){
    return x + 1;
})
// 等價(jià)于 a3=arr.map(x => x+1)
// a3 => [2, 4, -4]

對(duì)比 for...in 循環(huán),map()書(shū)寫(xiě)起來(lái)更加簡(jiǎn)潔:

let arr = [1, 3, -5];
let a1 = [];
for (var i=0; i [2, 4, -4]

map()作為高階函數(shù),事實(shí)上它把運(yùn)算規(guī)則抽象了。

2.2 reduce()

reduce()方法的作用是:接收一個(gè)函數(shù),對(duì)數(shù)組進(jìn)行累加操作,把累計(jì)結(jié)果和下一個(gè)值進(jìn)行操作,最后返回最終的單個(gè)結(jié)果值。

通常使用方式:arr.reduce(callback(), initValue),更多詳細(xì)介紹可以參考 MDN Array.reduce()

參數(shù)

callback(returnValue, currentValue, currentIndex, array) : 累記器的方法,四個(gè)參數(shù):

returnValue 上一次處理的返回值,或者初始值

currentValue 當(dāng)前處理的元素的,可選

currentIndex 當(dāng)前處理的元素的索引,可選

array 調(diào)用reduce()方法的數(shù)組,可選

initValue 初次調(diào)用callback()時(shí)候returnValue參數(shù)的初始值,默認(rèn)數(shù)組第一個(gè)元素,可選

返回值
返回一個(gè)最終的累計(jì)值。

實(shí)例

數(shù)組求和

let arr = [1, 3, -5];
let sum1 = arr.reduce((res, cur) => res + cur);
// sum1 => -1

let sum2 = arr.reduce((res, cur) => res + cur , 1);
// sum1 => 0

二維數(shù)組轉(zhuǎn)化為一維

let arr = [[1, 2], [3, 4], [5, 6]];
let con = arr.reduce((res, cur) => res.concat(cur));
// con => [1, 2, 3, 4, 5, 6]
2.3 filter()

filter()方法的作用是:接收一個(gè)函數(shù),依次作用數(shù)組每個(gè)元素,并過(guò)濾符合函數(shù)條件的元素,將剩下的數(shù)組作為一個(gè)新數(shù)組返回。

通常使用方式:arr.filter(callback(), thisArg),更多詳細(xì)介紹可以參考 MDN Array.filter()

參數(shù)

callback(ele, index, array) : 過(guò)濾條件的方法,當(dāng)返回true則保存該元素,反之不保留,三個(gè)參數(shù):

ele 當(dāng)前處理的元素

index 當(dāng)前處理的元素的索引,可選

array 調(diào)用filter()方法的數(shù)組,可選

thisArg 執(zhí)行 callback 時(shí)的用于 this 的值,可選

返回值
返回一個(gè)過(guò)濾剩下的元素組成的新數(shù)組。

實(shí)例

過(guò)濾奇數(shù)值

let arr = [1, 2, 3, 4, 5, 6];
let res = arr.filter(x => x % 2 != 0);
// res => [1, 3, 5]

過(guò)濾不滿足條件的值

let arr = [1, 2, 3, 4, 5, 6];
let res = arr.filter(x => x > 3);
// res => [4, 5, 6]

過(guò)濾空字符串

let arr = ["a", "", null, undefined, "b", ""];
let tri = arr.filter(x => x && x.trim());
// tri => ["a", "b"]

總結(jié)下: filter()主要作為篩選功能,因此核心就是正確實(shí)現(xiàn)一個(gè)“篩選”函數(shù)。

2.4 sort()

sort()方法的作用是:接收一個(gè)函數(shù),對(duì)數(shù)組的元素進(jìn)行排序,并返回排序后的新數(shù)組。默認(rèn)排序順序是根據(jù)字符串Unicode碼點(diǎn)

通常使用方式:arr.sort(fun()),更多詳細(xì)介紹可以參考 MDN Array.sort()
compareFunction 可選
用來(lái)指定按某種順序進(jìn)行排列的函數(shù)。如果省略,元素按照轉(zhuǎn)換為的字符串的各個(gè)字符的Unicode位點(diǎn)進(jìn)行排序。
參數(shù)

fun(a, b) : 指定按某種順序進(jìn)行排列的函數(shù),若省略則按照轉(zhuǎn)換為的字符串的各個(gè)字符的Unicode位點(diǎn)進(jìn)行排序,兩個(gè)可選參數(shù):

fun() 返回 ab兩個(gè)值的大小的比較結(jié)果,sort()根據(jù)返回結(jié)果進(jìn)行排序:

fun(a, b) 小于 0 ,則 a 排在 b 前面;

fun(a, b) 等于 0 ,則 a b 位置不變;

fun(a, b) 大于 0 ,則 a 排在 b 后面;

返回值
返回排序后的新數(shù)組,并修改原數(shù)組

實(shí)例

升序降序數(shù)組

let arr = [1,5,2,3];
let sort1 = arr.sort();
// 等同于 let sort1 = arr.sort((a, b) => a - b);
// sort1 => [1, 2, 3, 5]

let sort2 = arr.sort((a, b) => b - a);
// sort2 => [5, 3, 2, 1]

字符串排序

let arr1 = ["AA", "CC", "BB"];
let sort1 = arr1.sort();
// sort1 => ["AA", "BB", "CC"]

let arr2 = ["AA", "aa", "BB"];
let sort2 = arr2.sort();
// sort2 => ["AA", "BB", "aa"]

let arr3 = ["AA", "aa", "BB"];
let sort3 = arr3.sort((a, b) => a.toLowerCase() > b.toLowerCase());
// sort3 =>?["AA", "aa", "BB"]
// 也可以寫(xiě)成:
let sort3 = arr3.sort((a, b) => {
    let s1 = a.toLowerCase();
    let s2 = b.toLowerCase();
    return s1 > s2 ? 1 : s1 < s2 ? -1 : 0;
})

總結(jié)下: sort()主要作為排序功能,因此核心就是正確實(shí)現(xiàn)一個(gè)“排序”函數(shù)。

3. 參考文章

阮一峰 JS高階函數(shù)

分享的內(nèi)容比較簡(jiǎn)單,但是還是希望能幫助到需要的人哈。~~感謝

Author 王平安
E-mail pingan8787@qq.com
博 客 www.pingan8787.com
微 信 pingan8787
每日文章推薦 https://github.com/pingan8787...
ES小冊(cè) es.pingan8787.com

歡迎關(guān)注微信公眾號(hào)【前端自習(xí)課】每天早晨,與您一起學(xué)習(xí)一篇優(yōu)秀的前端技術(shù)博文 .

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/99735.html

相關(guān)文章

  • 重溫基礎(chǔ)】21.高階函數(shù)

    摘要:歡迎您的支持系列目錄復(fù)習(xí)資料資料整理個(gè)人整理重溫基礎(chǔ)篇重溫基礎(chǔ)對(duì)象介紹重溫基礎(chǔ)對(duì)象介紹重溫基礎(chǔ)介紹重溫基礎(chǔ)相等性判斷重溫基礎(chǔ)閉包重溫基礎(chǔ)事件本章節(jié)復(fù)習(xí)的是中的高階函數(shù),可以提高我們的開(kāi)發(fā)效率。 本文是 重溫基礎(chǔ) 系列文章的第二十一篇。 今日感受:想家。 本人自己整理的【Cute-JavaScript】資料,包含:【ES6/ES7/ES8/ES9】,【JavaScript基礎(chǔ)...

    wua_wua2012 評(píng)論0 收藏0
  • 重溫基礎(chǔ)】22.內(nèi)存管理

    摘要:內(nèi)存泄露內(nèi)存泄露概念在計(jì)算機(jī)科學(xué)中,內(nèi)存泄漏指由于疏忽或錯(cuò)誤造成程序未能釋放已經(jīng)不再使用的內(nèi)存。判斷內(nèi)存泄漏,以字段為準(zhǔn)。 本文是 重溫基礎(chǔ) 系列文章的第二十二篇。 今日感受:優(yōu)化學(xué)習(xí)方法。 系列目錄: 【復(fù)習(xí)資料】ES6/ES7/ES8/ES9資料整理(個(gè)人整理) 【重溫基礎(chǔ)】1-14篇 【重溫基礎(chǔ)】15.JS對(duì)象介紹 【重溫基礎(chǔ)】16.JSON對(duì)象介紹 【重溫基礎(chǔ)】1...

    Pandaaa 評(píng)論0 收藏0
  • 重溫基礎(chǔ)】15.JS對(duì)象介紹

    摘要:構(gòu)造函數(shù)通常首字母大寫(xiě),用于區(qū)分普通函數(shù)。這種關(guān)系常被稱為原型鏈,它解釋了為何一個(gè)對(duì)象會(huì)擁有定義在其他對(duì)象中的屬性和方法。中所有的對(duì)象,都有一個(gè)屬性,指向?qū)嵗龑?duì)象的構(gòu)造函數(shù)原型由于是個(gè)非標(biāo)準(zhǔn)屬性,因此只有和兩個(gè)瀏覽器支持,標(biāo)準(zhǔn)方法是。 從這篇文章開(kāi)始,復(fù)習(xí) MDN 中級(jí)教程 的內(nèi)容了,在初級(jí)教程中,我和大家分享了一些比較簡(jiǎn)單基礎(chǔ)的知識(shí)點(diǎn),并放在我的 【Cute-JavaScript】系...

    booster 評(píng)論0 收藏0
  • 重溫基礎(chǔ)】19.閉包

    摘要:系列目錄復(fù)習(xí)資料資料整理個(gè)人整理重溫基礎(chǔ)篇重溫基礎(chǔ)對(duì)象介紹重溫基礎(chǔ)對(duì)象介紹重溫基礎(chǔ)介紹重溫基礎(chǔ)相等性判斷本章節(jié)復(fù)習(xí)的是中的關(guān)于閉包,這個(gè)小哥哥呀,看看。這里隨著閉包函數(shù)的結(jié)束,執(zhí)行環(huán)境銷毀,變量回收。 本文是 重溫基礎(chǔ) 系列文章的第十九篇。今日感受:將混亂的事情找出之間的聯(lián)系,也是種能力。 系列目錄: 【復(fù)習(xí)資料】ES6/ES7/ES8/ES9資料整理(個(gè)人整理) 【重溫基礎(chǔ)】...

    nanfeiyan 評(píng)論0 收藏0
  • 重溫基礎(chǔ)】9.正則表達(dá)式

    摘要:前置知識(shí)中的正則表達(dá)式是用來(lái)匹配字符串中指定字符組合的模式。另外需要記住正則表達(dá)式也是對(duì)象。在正則表達(dá)式創(chuàng)建時(shí)更新,不執(zhí)行。替換與正則表達(dá)式匹配的子串。查找以十六進(jìn)制數(shù)規(guī)定的字符。正則表達(dá)式拓展介紹在中有兩種情況。 本文是 重溫基礎(chǔ) 系列文章的第九篇。 今日感受:時(shí)間管理-角色管理法。 系列目錄: 【復(fù)習(xí)資料】ES6/ES7/ES8/ES9資料整理(個(gè)人整理) 【重溫基礎(chǔ)】1.語(yǔ)...

    ispring 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<