map()和filter()以及他們的區(qū)別

map()进每、filter()中都提供一個(gè)回調(diào)函數(shù),回調(diào)函數(shù)中有三個(gè)參數(shù)分別是數(shù)組元素腐巢,元素索引品追,原數(shù)組本身,并且這兩個(gè)方法在使用的過(guò)程中都不會(huì)改變?cè)瓟?shù)組冯丙。

一肉瓦、map()語(yǔ)法和示例

(1)、語(yǔ)法:

var newArray = arr.map(function callback(currentValue, index, array){ 
  ...       //對(duì)每個(gè)元素的處理 
}) 

參數(shù) :
1胃惜、callback:用來(lái)生成新數(shù)組用的函數(shù)泞莉。
2、currentValue:當(dāng)然正在處理的元素
3船殉、index:正在處理元素的索引
4鲫趁、array:調(diào)用map方法的數(shù)組(就是.map()前面的也就是arr)

(2)、示例

var a = [1,2,3,4];
var newa = a.map(function(x){
 return x = x+1;
});
console.log(newa,a); 
//newa : 2 3 4 5   //a: 1 2 3 4
二利虫、filter()語(yǔ)法和示例

filter()方法會(huì)返回一個(gè)新數(shù)組挨厚,該新數(shù)組的元素是符合回到函數(shù)中篩選條件的結(jié)果。filter()為數(shù)組中的每個(gè)元素調(diào)用一次 callback 函數(shù)糠惫,并利用所有使得回調(diào)函數(shù)返回 true 或等價(jià)于 true 的值的元素創(chuàng)建一個(gè)新數(shù)組疫剃;如果沒(méi)有任何的項(xiàng)符合篩選的條件(false),那么filter()方法將返回一個(gè)空的數(shù)組硼讽。

(1)巢价、語(yǔ)法:

var newArray = arr.filter(function callback(currentValue, index , array){ 
    ...//函數(shù)代碼 
}); 

參數(shù) :
1、callback: 調(diào)用的過(guò)濾函數(shù)
2固阁、curValue: 當(dāng)前元素
3壤躲、index: 當(dāng)前元素的索引
4、array:調(diào)用filter的數(shù)組

(2)备燃、示例

var a = [1,2,3,4];
var newa = a.filter(function(x){
 return x > 1;
});
console.log(newa,a); 
//newa : 2 3 4    //a: 1 2 3 4
三碉克、兩者互換比較

把map中調(diào)用的函數(shù)換成filter里面的過(guò)濾函數(shù)是否能得到相同的結(jié)果

var a = [1,2,3,4];
var newa = a.map(function(x){
 return x > 1;
});
console.log(newa,a); 
//newa :false true true true     //a: 1 2 3 4

可以看出來(lái)newa 的到的并不是數(shù)字,它們只是對(duì)當(dāng)前元素調(diào)用函數(shù)后(x是否大于1)的結(jié)果并齐。而filter 會(huì)將結(jié)果為true的數(shù)組存到新的數(shù)組里面棉胀。

四、與其他遍歷函數(shù)對(duì)比差異

(1)冀膝、forEach() 數(shù)組的每一個(gè)元素執(zhí)行一次提供的函數(shù)。

應(yīng)用一:

var a = [1,2,3,4];
var newa = a.forEach(function(x){
 return x > 1;
});
console.log(newa,a);  //undifined  //1 2 3 4 

應(yīng)用二:

var a = [1,2,3,4];
var newa = a.forEach(function(x){
 console.log(x);
});
console.log(newa,a);  
//1
//2
//3
//4
//undifined  //1 2 3 4 

從上面可以看出forEach 只是讓數(shù)組里面的元素執(zhí)行一次函數(shù)霎挟,并不會(huì)對(duì)原數(shù)組產(chǎn)生影響窝剖,也不會(huì)獲得新的數(shù)組

(2)、reduce() 接受一個(gè)函數(shù)作為累加器酥夭,依次加上數(shù)組的當(dāng)前元素赐纱。

語(yǔ)法

arr.reduce(callback(previousValue, currentValue, currentIndex,array),initialValue); 

參數(shù)
1脊奋、callback:累加器函數(shù)
2、previousValue: 上一次調(diào)用函數(shù)后的返回值疙描,或者是提供的初始值(initialValue)
3诚隙、currentValue:當(dāng)前數(shù)組的元素
4、currentIndex:當(dāng)前數(shù)組元素的索引
5起胰、array:調(diào)用reduce的數(shù)組
6久又、initialValue:初始值,作為第一次調(diào)用callback的第一個(gè)參數(shù)效五,也可不寫地消,默認(rèn)為0;

示例

var a = [1,2,3,4];
var newa= a.reduce(function(total, current){
 return total + current;
},100);
console.log(newa,a);
//110   //1 2 3 4

總結(jié):當(dāng)想改變數(shù)組的時(shí)候用map畏妖,想對(duì)數(shù)組進(jìn)行過(guò)濾用filter脉执,累加數(shù)組用reduce。

參考文章:https://blog.csdn.net/liuzm0515/article/details/80418801

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末戒劫,一起剝皮案震驚了整個(gè)濱河市半夷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌迅细,老刑警劉巖巫橄,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異疯攒,居然都是意外死亡嗦随,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門敬尺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)枚尼,“玉大人,你說(shuō)我怎么就攤上這事砂吞∈鸹校” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵蜻直,是天一觀的道長(zhǎng)盯质。 經(jīng)常有香客問(wèn)我,道長(zhǎng)概而,這世上最難降的妖魔是什么呼巷? 我笑而不...
    開(kāi)封第一講書人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮赎瑰,結(jié)果婚禮上王悍,老公的妹妹穿的比我還像新娘。我一直安慰自己餐曼,他們只是感情好压储,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布鲜漩。 她就那樣靜靜地躺著,像睡著了一般集惋。 火紅的嫁衣襯著肌膚如雪孕似。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 52,255評(píng)論 1 308
  • 那天刮刑,我揣著相機(jī)與錄音喉祭,去河邊找鬼。 笑死为朋,一個(gè)胖子當(dāng)著我的面吹牛臂拓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播习寸,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼胶惰,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了霞溪?” 一聲冷哼從身側(cè)響起孵滞,我...
    開(kāi)封第一講書人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鸯匹,沒(méi)想到半個(gè)月后坊饶,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡殴蓬,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年匿级,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片染厅。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡痘绎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肖粮,到底是詐尸還是另有隱情孤页,我是刑警寧澤,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布涩馆,位于F島的核電站行施,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏魂那。R本人自食惡果不足惜蛾号,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望涯雅。 院中可真熱鬧须教,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)划乖。三九已至贬养,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間琴庵,已是汗流浹背误算。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留迷殿,地道東北人儿礼。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像庆寺,于是被迫代替她去往敵國(guó)和親蚊夫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容