自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

在 JavaScript 中,數(shù)組就像數(shù)據(jù)結構中的超級英雄。

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

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

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

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

什么是 flat() 方法?

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

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

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

用法

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

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

depth(可選):要展平的層數(shù),例如決定要打開多少個盒子層,默認值為 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() 方法就像您的數(shù)組操作工具包中有一根魔杖。它的工作原理是首先對數(shù)組中的每個元素施展魔法,然后將施魔法的結果展平到新數(shù)組中。

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

用法

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

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

  • currentValue:當前受您施法的元素。
  • index(可選):元素的索引(如果您需要的話)。
  • array(可選):調用 flatMap 的原始數(shù)組。
  • 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 的數(shù)組。

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

示例 2:展平嵌套數(shù)組

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

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


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

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

flat() 與 flatMap()

用例場景

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

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

性能比較

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

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

限制

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

結論

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

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

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

2020-03-09 20:56:19

LoRaLoRaWAN無線技術

2022-06-06 14:53:02

LoRaLoRaWAN

2022-09-07 18:32:57

并發(fā)編程線程

2020-11-09 14:07:53

PyQtQt編程

2022-09-08 18:38:26

LinuxWindowsmacOS

2021-12-17 14:40:02

while(1)for(;;)語言

2022-02-27 15:33:22

安全CASBSASE

2021-05-16 14:26:08

RPAIPACIO

2022-08-02 08:23:37

SessionCookies

2024-03-05 18:59:59

前端開發(fā)localhost

2024-05-27 00:40:00

2023-12-15 09:21:17

ObjectJavaString

2022-08-31 08:33:54

Bash操作系統(tǒng)Linux

2025-03-10 09:30:00

SpringJava開發(fā)

2022-08-22 07:06:32

MyBatisSQL占位符

2022-01-16 07:46:53

SpringDataASSM

2021-09-06 10:45:18

XDRMDR

2022-09-02 09:02:44

TypeInterface

2024-03-06 16:19:09

NB-IoTLoRaWAN物聯(lián)網(wǎng)

2020-06-28 15:11:07

LoRaWAN網(wǎng)絡專用網(wǎng)絡
點贊
收藏

51CTO技術棧公眾號