map 函數(shù) :
數(shù)組利用map函數(shù)迭代執(zhí)行函數(shù)皂股,高度抽象化,簡化流程
reduce方法
*****************用法???? reduce可以理解 2個參數(shù)的迭代?? 實(shí)現(xiàn)更多的功能
map和priseInt函數(shù)唬渗,map函數(shù)需要接3個參數(shù)师倔,currentValue? ? 第一個參數(shù)役首,數(shù)組中當(dāng)前被傳遞的元素虫啥。index? 第二個參數(shù),數(shù)組中當(dāng)前被傳遞的元素的索引坑赡。array? 第三個參數(shù)烙如,調(diào)用 map 方法的數(shù)組么抗。parseInt()函數(shù)可解析一個字符串,并返回一個整數(shù)厅翔。語法parseInt(string, radix)乖坠;string? ? 必需。要被解析的字符串刀闷。radix? ? 可選熊泵。表示要解析的數(shù)字的基數(shù)。該值介于 2 ~ 36 之間甸昏。如果省略該參數(shù)或其值為 0顽分,則數(shù)字將以 10 為基礎(chǔ)來解析。如果它以 “0x” 或 “0X” 開頭施蜜,將以 16 為基數(shù)卒蘸。如果該參數(shù)小于 2 或者大于 36,則 parseInt() 將返回 NaN翻默。在知道了這兩個函數(shù)的語法之后缸沃,再來看看小明的寫法。
var arr = ['1', '2', '3'];
var r;
r = arr.map(parseInt);
因?yàn)閙ap()接收三個參數(shù)修械,parseInt()接收兩個參數(shù)趾牧,所以map的第三個參數(shù)被parseInt忽略了,這個不難理解肯污,但是要注意了翘单,map的第二個參數(shù)并沒有被忽略。現(xiàn)在來分析下程序蹦渣,假如現(xiàn)在執(zhí)行arr的第一個元素哄芜,即'1';對應(yīng)到map參數(shù)可知,此時傳入map的第一個參數(shù)即為被傳遞的元素'1';第二個參數(shù)即為其索引0柬唯;這兩個參數(shù)被傳入parseInt中认臊,即parseInt('1', 0);對應(yīng)到上述parsent的參數(shù)規(guī)則可知,此時結(jié)果為1权逗;同理美尸,parseInt('2',1) //radix小于2 返回NaN,parseInt('3',2) //3是非法的二進(jìn)制數(shù),返回NaN
filter函數(shù)
和map()類似,Array的filter()也接收一個函數(shù)。和map()不同的是武通,filter()把傳入的函數(shù)依次作用于每個元素畔勤,然后根據(jù)返回值是true還是false決定保留還是丟棄該元素。
篩選數(shù)組重復(fù)元素蕊温,因?yàn)閕ndex 默認(rèn)返回第一個元素位置袱箱,若有重復(fù)則不等
sort方法 會改變本數(shù)組遏乔,并返回本數(shù)組,默認(rèn)以字符串方式比較发笔,
閉包:
本質(zhì)上盟萨,建立起函數(shù)內(nèi)部與外部的橋梁??? 讓函數(shù)外部可以訪問內(nèi)部的變量