亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JavaScript:.forEach()和.map()之間的區別

JavaScript:.forEach()和.map()之間的區別

我知道有很多這樣的話題。而且我知道基礎知識:.forEach()既可以在原始陣列.map()上運行,也可以在新陣列上運行。就我而言:function practice (i){    return i+1;};var a = [ -1, 0, 1, 2, 3, 4, 5 ];var b = [ 0 ];var c = [ 0 ];console.log(a);b = a.forEach(practice);console.log("=====");console.log(a);console.log(b);c = a.map(practice);console.log("=====");console.log(a);console.log(c);這是輸出:[ -1, 0, 1, 2, 3, 4, 5 ]=====[ -1, 0, 1, 2, 3, 4, 5 ]undefined=====[ -1, 0, 1, 2, 3, 4, 5 ][ 0, 1, 2, 3, 4, 5, 6 ]我不明白為什么要使用practice更改bto的值undefined。如果這是一個愚蠢的問題,我感到很抱歉,但是我是這種語言的新手,到目前為止我發現的答案并不令我滿意。
查看完整描述

3 回答

?
紅糖糍粑

TA貢獻1815條經驗 獲得超6個贊

他們是不一樣的。讓我解釋一下區別。


forEach:這會遍歷列表,并對每個列表成員應用一些有副作用的操作(例如:將每個列表項保存到數據庫)


map:這會遍歷一個列表,轉換該列表的每個成員,然后返回與轉換后的成員大小相同的另一個列表(例如:將字符串列表轉換為大寫)


查看完整回答
反對 回復 2019-09-24
?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

Array.forEach “每個數組元素執行一次提供的函數?!?/p>


Array.map “創建一個新數組,其結果是對該數組中的每個元素調用一個提供的函數?!?/p>


因此,forEach實際上不返回任何東西。它只是為每個數組元素調用函數,然后就完成了。因此,您在該調用函數中返回的所有內容都將被簡單丟棄。


另一方面,map將類似地為每個數組元素調用該函數,但不是丟棄其返回值,而是捕獲它并構建這些返回值的新數組。


這也意味著您可以map在任何使用位置使用它,forEach但是仍然不應該這樣做,因此您不會出于任何目的而收集返回值。如果您不需要它們,不收集它們會更有效率。


查看完整回答
反對 回復 2019-09-24
?
烙印99

TA貢獻1829條經驗 獲得超13個贊

+ ---------------- + -------------------------------- ----- + --------------------------------------- +

| | foreach | 地圖|

+ ---------------- + -------------------------------- ----- + --------------------------------------- +

| 功能| 對每個|執行給定的操作。對|執行給定的“轉換”

| | 數組的元素| 每個元素的“副本” |

+ ---------------- + -------------------------------- ----- + --------------------------------------- +

| 返回值 返回未定義 返回轉換后的新數組|

| | | 保留原始數組的元素|

| | | 不變

+ ---------------- + -------------------------------- ----- + --------------------------------------- +

| 首選| 執行非轉換,如| 獲取包含|的輸出的數組

| 使用場景| 在每個元素上進行處理。| 每個元素上完成的一些處理|

| 和示例 | 的數組。|

| | 例如,將所有元素保存在|中。|

| | 數據庫| 例如,獲得|的數組

| | | |中每個字符串的長度

| | | 數組|

+ ---------------- + -------------------------------- ----- + --------------------------------------- +


查看完整回答
反對 回復 2019-09-24
  • 3 回答
  • 0 關注
  • 877 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號