欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解JavaScript中map()和forEach()的異同

 更新時間:2024年02月03日 08:38:04   作者:為什么會變成這樣呢  
在JavaScript中,map()和forEach()是兩個常用的數(shù)組方法,它們都用于遍歷數(shù)組,但在某些方面有一些關(guān)鍵的區(qū)別,本文將詳細(xì)討論這兩種方法的異同,以幫助您更好地理解它們的用法和適用場景,需要的朋友可以參考下

前言

在JavaScript中,map()forEach()是兩個常用的數(shù)組方法,它們都用于遍歷數(shù)組,但在某些方面有一些關(guān)鍵的區(qū)別。本文將詳細(xì)討論這兩種方法的異同,以幫助您更好地理解它們的用法和適用場景。

返回值

map() map()方法創(chuàng)建一個新數(shù)組,其中包含對原始數(shù)組的每個元素應(yīng)用回調(diào)函數(shù)的結(jié)果。

const numbers = [1, 2, 3];
const doubled = numbers.map(num => num * 2);
// doubled: [2, 4, 6]

map()通過對每個元素執(zhí)行回調(diào)函數(shù)來生成新數(shù)組,原始數(shù)組不會被改變。

forEach() forEach()方法僅用于迭代數(shù)組中的每個元素,而不返回新數(shù)組。它的主要目的是執(zhí)行回調(diào)函數(shù),而不關(guān)心返回值。

const numbers = [1, 2, 3];
numbers.forEach(num => console.log(num));
// 輸出:1, 2, 3

由于map()返回一個新數(shù)組,因此它通常用于對原始數(shù)組進(jìn)行轉(zhuǎn)換,而原數(shù)組保持不變。而forEach()主要用于對數(shù)組元素進(jìn)行迭代,執(zhí)行一些操作,但不會創(chuàng)建新的數(shù)組。因此,在需要獲取處理結(jié)果的情況下,map()更為合適。

可鏈性

map() 由于map()返回一個新數(shù)組,因此可以鏈?zhǔn)秸{(diào)用多個數(shù)組方法。

const numbers = [1, 2, 3];
const squaredAndDoubled = numbers.map(num => num * 2).map(num => num ** 2);
// squaredAndDoubled: [4, 16, 36]

forEach() forEach()方法返回undefined,不支持鏈?zhǔn)秸{(diào)用。

中斷迭代

map() 由于map()返回一個新數(shù)組,您可以通過在回調(diào)函數(shù)中使用return語句來提前終止迭代。

const numbers = [1, 2, 3, 4, 5];
const squared = numbers.map(num => {
  if (num > 3) return;
  return num ** 2;
});
// squared: [1, 4, 9, undefined, undefined]

forEach() forEach()無法提前終止迭代。 如果需要中斷,可以通過在回調(diào)函數(shù)中拋出異常。

const numbers = [1, 2, 3, 4, 5];
try {
  numbers.forEach(num => {
    if (num > 3) throw BreakException;
    console.log(num);
  });
} catch (e) {}

性能

通常來說,map()的性能稍微低于forEach()因為map()需要創(chuàng)建一個新數(shù)組。

使用場景

map()的使用場景:

數(shù)據(jù)轉(zhuǎn)換: 當(dāng)需要對數(shù)組中的每個元素執(zhí)行某種操作,并將結(jié)果組成一個新的數(shù)組時,map()是首選。

const numbers = [1, 2, 3];
const squared = numbers.map(num => num ** 2);
// squared: [1, 4, 9]

提取特定屬性: 適用于從對象數(shù)組中提取特定屬性形成新數(shù)組。

const users = [
  { id: 1, name: 'Alice' },
  { id: 2, name: 'Bob' },
  { id: 3, name: 'Charlie' }
];

const userIds = users.map(user => user.id);
// userIds: [1, 2, 3]

forEach()的使用場景:

迭代數(shù)組: 當(dāng)只需要遍歷數(shù)組執(zhí)行某個操作,而不需要生成新的數(shù)組時,forEach()是更直接的選擇。

const numbers = [1, 2, 3];
let sum = 0;

numbers.forEach(num => {
  console.log(num);
  sum += num;
});
// 輸出:1, 2, 3
// sum: 6

操作全局變量: 可以在forEach()循環(huán)中更改外部變量的值。

const numbers = [1, 2, 3];
let sum = 0;

numbers.forEach(num => {
  sum += num;
});
// sum: 6

結(jié)論

總的來說,map()forEach()在某些方面有所不同,因此在選擇使用它們時需要根據(jù)具體需求權(quán)衡其優(yōu)缺點。如果需要生成一個新數(shù)組并對每個元素進(jìn)行操作,則使用map();如果只是需要迭代數(shù)組并執(zhí)行一些操作,而不關(guān)心返回值,則使用forEach()。

以上就是詳解JavaScript中map()和forEach()的異同的詳細(xì)內(nèi)容,更多關(guān)于JavaScript map()和forEach()異同的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • JavaScript中return返回多個值的三個方法實現(xiàn)

    JavaScript中return返回多個值的三個方法實現(xiàn)

    本文主要介紹了JavaScript中return返回多個值的三個方法實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • JS遍歷對象屬性的方法示例

    JS遍歷對象屬性的方法示例

    這篇文章主要介紹了JS遍歷對象屬性的方法,涉及JS針對頁面元素屬性遍歷操作的相關(guān)技巧,需要的朋友可以參考下
    2017-01-01
  • JavaScript+Canvas實現(xiàn)簡單的柱狀圖

    JavaScript+Canvas實現(xiàn)簡單的柱狀圖

    這篇文章主要為大家詳細(xì)介紹了JavaScript如何利用Canvas實現(xiàn)繪制簡單的柱狀圖,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10
  • 使用js實現(xiàn)html標(biāo)簽、文本的隱藏、顯示、刪除及添加

    使用js實現(xiàn)html標(biāo)簽、文本的隱藏、顯示、刪除及添加

    在設(shè)計網(wǎng)頁時,有時需要靜態(tài)或動態(tài)地隱藏標(biāo)簽或顯示被隱藏的標(biāo)簽,那該怎么實現(xiàn)呢?這篇文章主要給大家介紹了關(guān)于使用js實現(xiàn)html標(biāo)簽、文本的隱藏、顯示、刪除及添加的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • 實現(xiàn)只能輸入數(shù)字的input不用replace方法

    實現(xiàn)只能輸入數(shù)字的input不用replace方法

    只能輸入數(shù)字在以往都是使用replace方法實現(xiàn)的,在本文你將學(xué)習(xí)到不使用它依然可以實現(xiàn),具體代碼如下,感興趣的朋友可以參考下
    2013-09-09
  • 解決js中window.open彈出的是上次的緩存頁面問題

    解決js中window.open彈出的是上次的緩存頁面問題

    本文為大家介紹下如何解決js中window.open彈出的是上次的緩存頁面的問題,下面有個不錯的示例,感興趣的額朋友可以參考下
    2013-12-12
  • JS原型鏈 詳解及示例代碼

    JS原型鏈 詳解及示例代碼

    本文主要介紹JS原型鏈的知識,這里整理了相關(guān)資料及簡單實現(xiàn)示例代碼,有興趣的小伙伴可以參考下
    2016-09-09
  • 一文入門Webpack文件指紋

    一文入門Webpack文件指紋

    文件指紋是文件打包后輸出的文件名的后綴,通常用來做一些文件的版本管理,文中給大家提到了幾種文件指紋的設(shè)置用法,對Webpack文件指紋相關(guān)知識感興趣的朋友一起看看吧
    2022-02-02
  • JavaScript實現(xiàn)飛舞的泡泡效果

    JavaScript實現(xiàn)飛舞的泡泡效果

    這篇文章主要為大家詳細(xì)介紹了JavaScript實現(xiàn)飛舞的泡泡效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • JS如何根據(jù)當(dāng)前日期獲取一周所有日期

    JS如何根據(jù)當(dāng)前日期獲取一周所有日期

    這篇文章主要介紹了JS如何根據(jù)當(dāng)前日期獲取一周所有日期,文中通過實例代碼補充介紹了js獲取當(dāng)前一周的時間,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09

最新評論