成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

flat() 和 flatMap() 有什么區別?

開發 前端
在 JavaScript 中,數組就像數據結構中的超級英雄。但是,當你進入嵌套數組的領域時,事情可能會變得有點混亂,就像一團亂麻。

在 JavaScript 中,數組就像數據結構中的超級英雄。

但是,當你進入嵌套數組的領域時,事情可能會變得有點混亂,就像一團亂麻。

幸運的是,ES2019 帶來了兩個超級方便的數組方法:flat() 和 flatMap()。

這些方法不僅使數組處理變得輕而易舉,而且還簡化了處理那些討厭的嵌套數組的過程。

讓我們深入了解這些方法的細節、它們的區別,以及它們如何在現實世界的編碼場景中成為你值得信賴的伙伴,同時,像仙塵一樣加入代碼示例來幫助你掌握這些技能。

什么是 flat() 方法?

想象一下:你有一盒快遞包裹,里面裝滿了各種各樣的小盒子。每個小盒子可能都裝有更小的盒子,而這些小盒子里可能裝有好東西。 

現在,想象一下,你想找到所有的好東西,但又不想費力地打開每個盒子。

這時 flat() 方法就派上用場了,它就像一臺神奇的壓平機,可以把所有東西都壓平,這樣你就能一目了然地看到所有的寶貝。

用法

var newArray = arr.flat([depth]);

arr:需要展平的“盒子”(數組)。

depth(可選):要展平的層數,例如決定要打開多少個盒子層,默認值為 1。

示例 1:展平一層

讓我們展開它:

let nestedArray = [1, [2, 3], [4, [5, 6]]];
let flattenedArray = nestedArray.flat();


console.log(flattenedArray); // Output: [1, 2, 3, 4, [5, 6]]

在這里,flat() 就像輕輕推一下,打開最外層的盒子,讓你可以看到 2 和 3,以及 4,而它的小盒子 [5, 6] 仍然關閉。

示例 2:展平多層

如果你喜歡冒險,想要展平整個堆棧,請查看以下內容:

let nestedArray = [1, [2, [3, [4, 5]]]];
let flattenedArray = nestedArray.flat(2);


console.log(flattenedArray); // Output: [1, 2, 3, [4, 5]]

使用 flat(2),您就像一個開箱高手,打開兩層箱子,只留下最里面的 [4, 5] 未受影響。

什么是 flatMap() 方法?

flatMap() 方法就像您的數組操作工具包中有一根魔杖。它的工作原理是首先對數組中的每個元素施展魔法,然后將施魔法的結果展平到新數組中。

可以將其視為 map() 和 flat()(深度為 1)的強大組合,只需一個快速動作即可完成。

用法

var newArray = arr.flatMap(function callback(currentValue[, index[, array]]) {
    // Weave your magic here and return elements of the new array
}[, thisArg]);

回調:可信賴的魔法書,定義如何為每個數組元素施法。它接受三個參數:

  • currentValue:當前受您施法的元素。
  • index(可選):元素的索引(如果您需要的話)。
  • array(可選):調用 flatMap 的原始數組。
  • thisArg(可選):施放回調魔法時的神奇 this 值。

示例 1:基本魔法

讓我們施放一個簡單的魔法:

let arr = [1, 2, 3, 4];
let mappedAndFlattened = arr.flatMap(x => [x, x * 2]);


console.log(mappedAndFlattened); // Output: [1, 2, 2, 4, 3, 6, 4, 8]

在這個魔法中,flatMap() 首先將每個元素 x 轉換為一個包含 x 和 x * 2 的數組。

然后,flatMap() 揮動魔杖將這些數組展平為一個,省去了手動轉換 map() 和 flat() 的麻煩。

示例 2:展平嵌套數組

如果您面對的是嵌套數組,flatMap() 就是您成功的靈丹妙藥:

let nestedArray = [[1], [2, 3], [4]];
let flattenedArray = nestedArray.flatMap(x => x);


console.log(flattenedArray); // Output: [1, 2, 3, 4]

在這里,flatMap() 返回每個子數組并將其展平為一個新數組,就像煉金術大師將賤金屬變成黃金一樣。

flat() 與 flatMap()

用例場景

 flat():當你在尋求展平嵌套數組而不改變元素時,flat() 是你的最佳選擇。它可以將多層數組展平到你想要的深度,像藏寶圖一樣顯示所有元素。

flatMap():如果你的任務不僅是展平數組,而且還要先轉換元素,例如在展平之前將每個元素映射到不同的值,那么 flatMap() 就是您值得信賴的伙伴。它結合了 map() 和 flat() 的功能,在一個英勇的行為中完成轉換和展平。

性能比較

flatMap() 更高效:使用 flatMap() 通常比先轉換 map() 然后 flat() 更有效,因為 flatMap() 遍歷數組一次,而不是兩次。

這意味著在處理大量數據時,flatMap() 可能會表現更好,從而減少不必要的遍歷開銷。

限制

flatMap() 的局限性:盡管 flatMap() 很強大,但它只能展平一層嵌套。如果你的數組是一個深層嵌套的迷宮,并且你需要完全解開它,那么,你仍然需要使用具有適當深度的 flat()。例如,flat(2) 可以展平兩層嵌套,而 flatMap() 只能管理一層。

結論

在 JavaScript 世界中,掌握 flat() 和 flatMap() 的數組方法不僅可以將你的代碼制作成時尚、優雅的杰作,還可以增強你像真正的編碼向導一樣處理復雜數據結構的能力。 

希望今天的神奇分享能幫助您掌握這兩種方法,并在你的項目中自信地運用它們。

責任編輯:華軒 來源: web前端開發
相關推薦

2021-05-16 14:26:08

RPAIPACIO

2022-02-27 15:33:22

安全CASBSASE

2024-05-27 00:40:00

2021-12-17 14:40:02

while(1)for(;;)語言

2024-03-05 18:59:59

前端開發localhost

2022-08-02 08:23:37

SessionCookies

2020-11-09 14:07:53

PyQtQt編程

2022-06-06 14:53:02

LoRaLoRaWAN

2020-03-09 20:56:19

LoRaLoRaWAN無線技術

2022-09-08 18:38:26

LinuxWindowsmacOS

2022-09-07 18:32:57

并發編程線程

2023-12-15 09:21:17

ObjectJavaString

2022-08-22 07:06:32

MyBatisSQL占位符

2022-08-31 08:33:54

Bash操作系統Linux

2025-03-10 09:30:00

SpringJava開發

2016-12-07 19:55:33

大數據深度學習

2022-01-14 11:23:57

區塊鏈比特幣加密貨幣

2012-10-18 14:46:01

Windows RTWindows 8

2022-03-14 10:26:23

云計算物聯網
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 激情五月激情综合网 | 成人在线观看免费爱爱 | 亚洲免费在线 | 成人午夜网站 | 免费日韩av网站 | h肉视频| 亚洲一区二区三区乱码aⅴ 四虎在线视频 | 一区二区三区精品在线 | 亚洲一级视频在线 | 一级a性色生活片久久毛片波多野 | 国产精品成人一区二区 | 四虎最新地址 | 中文精品一区二区 | 欧美综合一区二区三区 | 免费在线观看成年人视频 | 在线播放一区二区三区 | 欧洲精品一区 | 国产成人a亚洲精品 | 日韩一级免费观看 | 欧美888 | 九九久久久| 九色视频网站 | 日韩成人在线电影 | 91久久久久久久久 | 九九九国产 | 午夜电影一区二区 | 亚洲美女一区二区三区 | 日韩中文字幕免费 | 亚洲一区二区免费 | 999免费网站 | 国产精品国产精品 | 9191av| 日本黄色片免费在线观看 | 激情在线视频网站 | 中文字幕在线免费视频 | www.久久| 日韩插插 | 亚洲精品播放 | 国产成人精品a视频一区www | 国产精品美女久久久久久不卡 | 99国产精品久久久久久久 |