技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運(yùn)營(yíng)

贊助商

分類目錄

贊助商

最新文章

搜索

JavaScript map()與forEach()方法的使用差異

作者:admin    時(shí)間:2021-9-29 17:11:56    瀏覽:

在 JavaScript 中,forEachmap是兩種最流行的處理數(shù)組的方法。這兩種方法的主要目的是遍歷數(shù)組。盡管它們看起來幾乎相同,但它們之間存在某些差異。在本文中,我們將討論JavaScript 中的mapforEach方法,我們還將通過它們之間的差異來了解何時(shí)使用它們。

 JavaScript map()與forEach()方法的使用差異

forEach方法

forEach方法允許你通過遍歷數(shù)組的每個(gè)元素來執(zhí)行函數(shù)。重要的是要注意該forEach方法不返回任何內(nèi)容,因此,如果你嘗試獲取forEach方法的返回值,則會(huì)得到 undefined。相反,它允許你通過在數(shù)組的每個(gè)元素上應(yīng)用回調(diào)函數(shù)來修改現(xiàn)有數(shù)組的值。由于它允許你修改源數(shù)組本身,因此它是一個(gè) mutator 方法。

我們查看以下示例以了解forEach方法的工作原理。

//a logging utility output text to the web page
const output=(string)=>document.body.innerHTML+=`${string}<br/>`;

//an array of numbers
let numberArray = [1, 2, 3, 4, 5];

//output the square of each number
let returnValue = numberArray.forEach((num, index) => 
  output(`${num} x ${num} = ${num * num}`);
);

//the array hasn't changed
output(numberArray);
output(returnValue);

trying >>

示例中,我們計(jì)算數(shù)組所有元素的平方。對(duì)每個(gè)元素調(diào)用 forEach 方法,我們記錄它的平方。這個(gè)輔助方法的返回值被忽略,原始數(shù)組不會(huì)改變。forEach的返回值始終為undefined。

map方法

map方法與forEach方法非常相似——它允許你為數(shù)組的每個(gè)元素執(zhí)行一個(gè)函數(shù)。但不同之處在于 map 方法使用該函數(shù)的返回值創(chuàng)建了一個(gè)新數(shù)組。map通過在源數(shù)組的每個(gè)元素上應(yīng)用回調(diào)函數(shù)來創(chuàng)建一個(gè)新數(shù)組。由于map不改變?cè)磾?shù)組,我們可以說它是不可變的方法。

我們用map修改上面的示例。

//a logging utility output text to the web page
const output=(string)=>document.body.innerHTML+=`${string}<br/>`;

//an array of numbers
let numberArray = [1, 2, 3, 4, 5];

//output the square of each number
let returnValue = numberArray.map((num) => num * num)

//view the results
output(numberArray);
output(returnValue);

可以看到,numberArray數(shù)組保持不變,但map返回值是一個(gè)新數(shù)組,該數(shù)組是通過將 square 函數(shù)應(yīng)用于數(shù)組的每個(gè)元素構(gòu)建的。

map 函數(shù)的一個(gè)優(yōu)點(diǎn)是它是可連接的。這意味著你可以連續(xù)調(diào)用多個(gè)map操作。這是一個(gè)連接示例,我們將每個(gè)數(shù)字乘以 2,將它們轉(zhuǎn)換為字符串,然后在每個(gè)數(shù)字上加上一個(gè)美元符號(hào)。

//a logging utility output text to the web page
const output=(string)=>document.body.innerHTML+=`${string}<br/>`;

//an array of numbers
let numberArray = [1, 2, 3, 4, 5];

//output the square of each number
let returnValue = numberArray
  .map((num) => num * 2)
  .map((num) => num.toString())
  .map((string) => "$"+string);

//view the results
output(numberArray);
output(returnValue);

輸出結(jié)果

1,2,3,4,5
$2,$4,$6,$8,$10

trying >>

map 和 forEach方法之間的差異

mapforEach之間的主要區(qū)別在于,map方法通過對(duì)數(shù)組的每個(gè)元素應(yīng)用回調(diào)函數(shù)來返回一個(gè)新數(shù)組,而forEach方法不返回任何內(nèi)容。

你可以使用forEach方法來改變?cè)磾?shù)組,但這并不是它真正的用途。相反,當(dāng)你需要對(duì)數(shù)組的每個(gè)元素執(zhí)行某些操作時(shí),它非常有用。

map方法用于創(chuàng)建一個(gè)新數(shù)組,它是可連接的,你可以一個(gè)接一個(gè)地調(diào)用多個(gè)map操作。

forEach方法不返回任何內(nèi)容,因此你不能將它與任何其他方法連接起來——它不可連接。

我應(yīng)該使用哪一個(gè),map還是forEach

現(xiàn)在,歸結(jié)為這個(gè)問題,如何決定是否應(yīng)該使用map還是forEach方法?

如果你打算通過應(yīng)用某個(gè)函數(shù)來更改數(shù)組元素,則應(yīng)該使用map方法,因?yàn)樗粫?huì)修改原始數(shù)組并返回一個(gè)新數(shù)組。這樣,原來的數(shù)組就完好無損。而如果您想遍歷數(shù)組的所有元素并且不需要返回的數(shù)組,請(qǐng)使用forEach方法。

除此之外,功能非常相似。

結(jié)論

今天,我們討論了 JavaScript 中兩個(gè)有用的方法:mapforEach. 我們通過幾個(gè)例子了解了它們之間的差異,并給出了一些使用建議,希望對(duì)大家有所幫助。

標(biāo)簽: map方法  forEach方法  
相關(guān)文章
    x
    • 站長(zhǎng)推薦
    /* 左側(cè)顯示文章內(nèi)容目錄 */