成人免费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前端開發
相關推薦

2020-03-09 20:56:19

LoRaLoRaWAN無線技術

2022-09-07 18:32:57

并發編程線程

2022-06-06 14:53:02

LoRaLoRaWAN

2022-09-08 18:38:26

LinuxWindowsmacOS

2020-11-09 14:07:53

PyQtQt編程

2021-12-17 14:40:02

while(1)for(;;)語言

2022-02-27 15:33:22

安全CASBSASE

2024-05-27 00:40:00

2021-05-16 14:26:08

RPAIPACIO

2022-08-02 08:23:37

SessionCookies

2024-03-05 18:59:59

前端開發localhost

2023-12-15 09:21:17

ObjectJavaString

2022-08-31 08:33:54

Bash操作系統Linux

2022-08-22 07:06:32

MyBatisSQL占位符

2025-03-10 09:30:00

SpringJava開發

2022-01-16 07:46:53

SpringDataASSM

2022-08-03 07:04:56

GETHTTPPOST

2021-03-27 10:56:17

promisethenfinally

2023-01-19 17:51:19

apt removeapt purge

2020-06-28 15:11:07

LoRaWAN網絡專用網絡
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本一区二区在线视频 | 成人国产一区二区三区精品麻豆 | 免费一级毛片 | 欧美三级视频 | 日本淫视频 | 超碰天天 | 久久视频免费观看 | 国产在线精品一区二区三区 | 日p视频免费看 | 国产精品区二区三区日本 | 视频二区在线观看 | 欧美一级二级三级视频 | 国产精品一区二区三区免费观看 | 7777精品伊人久久精品影视 | 精品国产不卡一区二区三区 | 欧美一区在线视频 | 日韩免费一二三区 | 午夜黄色影院 | 欧美一区二区三区的 | 欧美专区在线观看 | 91精品国产91久久久久青草 | 日韩av一区二区在线观看 | 国产高清自拍视频在线观看 | 欧美国产日韩一区二区三区 | 婷婷免费在线 | 亚洲视频免费播放 | 超碰综合 | 国产亚洲精品精品国产亚洲综合 | 亚卅毛片| 亚洲国产精品视频一区 | 精品一区二区三区四区五区 | 亚洲欧美一区二区三区在线 | 久久精品国产一区 | 国产高清视频一区 | 久久久av | 日本一区二区三区免费观看 | 日本天天操 | 亚洲国产一区二区在线 | 一区二区免费在线观看 | 亚洲精品久久久一区二区三区 | 中文字幕国产第一页 |