簡述foreach()與map()的區(qū)別

這兩個方法想必大家都很熟悉吧显晶,在項目中遍歷數(shù)組是很常用的方法,博主廢話也不多說了跃闹,對于這兩個方法的區(qū)別博主詳細(xì)的給大家講解一下G断鳌!望艺!

1苛秕、定義區(qū)別

forEach()?方法對數(shù)組的每個元素執(zhí)行一次給定的函數(shù)。

const?? list = ['orange',?'banana',?'apple']

list.forEach(item => console.log(item))

打印結(jié)果: 'orange',?'banana',?'apple'

map()?方法創(chuàng)建一個新數(shù)組找默,其結(jié)果是該數(shù)組中的每個元素是調(diào)用一次提供的函數(shù)后的返回值艇劫。

const list = [1,3,4,5]

let map = list.map(item => item*2)

console.log(map)

打印結(jié)果: [2,6,8,10]

注意:forEach()沒有返回值并且不可以鏈?zhǔn)秸{(diào)用懂拾。

? ? ? ? ? ?map()有返回值麦备,不會改變原數(shù)組,?但是可以在?callback?執(zhí)行時改變原數(shù)組抄瑟。

2咧欣、forEach()方法是否可以改變原數(shù)組的問題

(1)可以改變原數(shù)組

const??? list= [? ?{id:?1,?age:?22},? ? ? ?{id:?2,?age:?32},? ? ? ?{id:?3,?age:?25},? ? ? ?{id:?4,?age:?14},? ? ? ?{id:?5,?age:?12},? ? ? ?{id:?6,?age:?30}? ? ?]

list.forEach((item,index) => {

? ? ?if (item.id === 1) {

? ? ? ? item.age = 28

? ? }

? })

打印結(jié)果為: ?[? ?{id:?1,?age:?28},? ? ? ?{id:?2,?age:?32},? ? ? ?{id:?3,?age:?25},? ? ? ?{id:?4,?age:?14},? ? ? ?{id:?5,?age:?12},? ? ? ?{id:?6,?age:?30}? ? ?]

(2)不可以改變原數(shù)組

const????list=?[? ?{id:?1,?age:?22},? ? ? ?{id:?2,?age:?32},? ? ? ?{id:?3,?age:?25},? ? ? ?{id:?4,?age:?14},? ? ? ?{id:?5,?age:?12},? ? ? ?{id:?6,?age:?30}? ? ?]

list.forEach((item, index) => {

? ? ? if (item.id === 1) {

? ? ? ? item={ id: 7, age: 18 }

? ? ?}

? })

打印結(jié)果為:??[? ?{id:?1,?age:?22},? ? ? ?{id:?2,?age:?32},? ? ? ?{id:?3,?age:?25},? ? ? ?{id:?4,?age:?14},? ? ? ?{id:?5,?age:?12},? ? ? ?{id:?6,?age:?30}? ? ?]

寫到這里大家可能會有疑問這是為什么呢?

首先需要了解下數(shù)據(jù)的類型以及堆內(nèi)存和棧內(nèi)存的概念:

(1)基本數(shù)據(jù)類型:Number? String Null? Boolean等轨帜,它們的變量名和值以及對象的引用變量都會存儲在棧內(nèi)存

(2)引用數(shù)據(jù)類型:Funtion? Object魄咕,對于這些復(fù)雜的數(shù)據(jù)類型都是存在堆內(nèi)存

對于堆內(nèi)存和棧內(nèi)存這里就先不展開敘述了。說到這里想必大家應(yīng)該理解了吧蚌父!其實(shí)從上述兩個案例中不難看出一個是改變對象里的屬性值(即簡單數(shù)據(jù)類型)哮兰,另一個是改變整個對象(即引用數(shù)據(jù)類型)。對于這個問題博主就說到這里苟弛,大家如有任何疑問及時給我留言喝滞。

3、使用場景

(1)forEach()方法適合于你并不打算改變數(shù)據(jù)的時候膏秫,而只是想用數(shù)據(jù)做一些事情 – 比如存入數(shù)據(jù)庫或則打印出來右遭。

(2) map()適用于你要改變數(shù)據(jù)值的時候。此方法返回一個新數(shù)組,并且還可以使用復(fù)合(composition)(map(), filter(), reduce()等組合使? ? ? ? ? ? ? 用)來玩出更多的花樣窘哈。

4吹榴、forEach()的注意事項

1、 除了拋出異常以外滚婉,沒有辦法中止或跳出?forEach()?循環(huán)图筹。如果你需要中止或跳出循環(huán),可以使用以下幾個方法:? ? ? ? ? ? ? ? ? ? ? ? ? ?Array.prototype.every(), Array.prototype.some(), Array.prototype.find()等方法让腹。

2远剩、 為了在控制臺中顯示數(shù)組的內(nèi)容,你可以使用?console.table()?來展示經(jīng)過格式化的數(shù)組骇窍。

3瓜晤、 如果使用箭頭函數(shù)表達(dá)式來傳入函數(shù)參數(shù),?thisArg?參數(shù)會被忽略像鸡,因?yàn)榧^函數(shù)在詞法上綁定了?this?值活鹰。

總結(jié)

(1)forEach()方法沒有返回值且不可以鏈?zhǔn)秸{(diào)用,map()返回一個新數(shù)組只估。

(2)對于forEach()能否改變原數(shù)組的問題繼續(xù)深究(大家對于此問題如有什么想法可以留言共同探討)志群。

(3)這兩個方法在執(zhí)行速度上有待考究。(查閱資料說法不一)蛔钙。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锌云,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子吁脱,更是在濱河造成了極大的恐慌桑涎,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件兼贡,死亡現(xiàn)場離奇詭異攻冷,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)遍希,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門等曼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人凿蒜,你說我怎么就攤上這事禁谦。” “怎么了废封?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵州泊,是天一觀的道長。 經(jīng)常有香客問我漂洋,道長遥皂,這世上最難降的妖魔是什么力喷? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮渴肉,結(jié)果婚禮上冗懦,老公的妹妹穿的比我還像新娘。我一直安慰自己仇祭,他們只是感情好披蕉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著乌奇,像睡著了一般没讲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上礁苗,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天爬凑,我揣著相機(jī)與錄音,去河邊找鬼试伙。 笑死嘁信,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的疏叨。 我是一名探鬼主播潘靖,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蚤蔓!你這毒婦竟也來了卦溢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤秀又,失蹤者是張志新(化名)和其女友劉穎单寂,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吐辙,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宣决,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了昏苏。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疲扎。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖捷雕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情壹甥,我是刑警寧澤救巷,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站句柠,受9級特大地震影響浦译,放射性物質(zhì)發(fā)生泄漏棒假。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一精盅、第九天 我趴在偏房一處隱蔽的房頂上張望帽哑。 院中可真熱鬧,春花似錦叹俏、人聲如沸妻枕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽屡谐。三九已至,卻和暖如春蝌数,著一層夾襖步出監(jiān)牢的瞬間愕掏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工顶伞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留饵撑,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓唆貌,卻偏偏與公主長得像滑潘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子挠锥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354

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