日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

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

來源: 責(zé)編: 時間:2024-09-10 09:46:09 134觀看
導(dǎo)讀在 JavaScript 中,數(shù)組就像數(shù)據(jù)結(jié)構(gòu)中的超級英雄。但是,當(dāng)你進入嵌套數(shù)組的領(lǐng)域時,事情可能會變得有點混亂,就像一團亂麻。幸運的是,ES2019 帶來了兩個超級方便的數(shù)組方法:flat() 和 flatMap()。這些方法不僅使數(shù)組處理變得

在 JavaScript 中,數(shù)組就像數(shù)據(jù)結(jié)構(gòu)中的超級英雄。PyG28資訊網(wǎng)——每日最新資訊28at.com

PyG28資訊網(wǎng)——每日最新資訊28at.com

但是,當(dāng)你進入嵌套數(shù)組的領(lǐng)域時,事情可能會變得有點混亂,就像一團亂麻。PyG28資訊網(wǎng)——每日最新資訊28at.com

幸運的是,ES2019 帶來了兩個超級方便的數(shù)組方法:flat() 和 flatMap()。PyG28資訊網(wǎng)——每日最新資訊28at.com

這些方法不僅使數(shù)組處理變得輕而易舉,而且還簡化了處理那些討厭的嵌套數(shù)組的過程。PyG28資訊網(wǎng)——每日最新資訊28at.com

讓我們深入了解這些方法的細(xì)節(jié)、它們的區(qū)別,以及它們?nèi)绾卧诂F(xiàn)實世界的編碼場景中成為你值得信賴的伙伴,同時,像仙塵一樣加入代碼示例來幫助你掌握這些技能。PyG28資訊網(wǎng)——每日最新資訊28at.com

什么是 flat() 方法?

想象一下:你有一盒快遞包裹,里面裝滿了各種各樣的小盒子。每個小盒子可能都裝有更小的盒子,而這些小盒子里可能裝有好東西。 PyG28資訊網(wǎng)——每日最新資訊28at.com

現(xiàn)在,想象一下,你想找到所有的好東西,但又不想費力地打開每個盒子。PyG28資訊網(wǎng)——每日最新資訊28at.com

這時 flat() 方法就派上用場了,它就像一臺神奇的壓平機,可以把所有東西都壓平,這樣你就能一目了然地看到所有的寶貝。PyG28資訊網(wǎng)——每日最新資訊28at.com

用法PyG28資訊網(wǎng)——每日最新資訊28at.com

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

arr:需要展平的“盒子”(數(shù)組)。PyG28資訊網(wǎng)——每日最新資訊28at.com

depth(可選):要展平的層數(shù),例如決定要打開多少個盒子層,默認(rèn)值為 1。PyG28資訊網(wǎng)——每日最新資訊28at.com

示例 1:展平一層

讓我們展開它:PyG28資訊網(wǎng)——每日最新資訊28at.com

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] 仍然關(guān)閉。PyG28資訊網(wǎng)——每日最新資訊28at.com

示例 2:展平多層

如果你喜歡冒險,想要展平整個堆棧,請查看以下內(nèi)容:PyG28資訊網(wǎng)——每日最新資訊28at.com

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] 未受影響。PyG28資訊網(wǎng)——每日最新資訊28at.com

什么是 flatMap() 方法?

flatMap() 方法就像您的數(shù)組操作工具包中有一根魔杖。它的工作原理是首先對數(shù)組中的每個元素施展魔法,然后將施魔法的結(jié)果展平到新數(shù)組中。PyG28資訊網(wǎng)——每日最新資訊28at.com

可以將其視為 map() 和 flat()(深度為 1)的強大組合,只需一個快速動作即可完成。PyG28資訊網(wǎng)——每日最新資訊28at.com

用法PyG28資訊網(wǎng)——每日最新資訊28at.com

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

回調(diào):可信賴的魔法書,定義如何為每個數(shù)組元素施法。它接受三個參數(shù):PyG28資訊網(wǎng)——每日最新資訊28at.com

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

示例 1:基本魔法

讓我們施放一個簡單的魔法:PyG28資訊網(wǎng)——每日最新資訊28at.com

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 轉(zhuǎn)換為一個包含 x 和 x * 2 的數(shù)組。PyG28資訊網(wǎng)——每日最新資訊28at.com

然后,flatMap() 揮動魔杖將這些數(shù)組展平為一個,省去了手動轉(zhuǎn)換 map() 和 flat() 的麻煩。PyG28資訊網(wǎng)——每日最新資訊28at.com

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

如果您面對的是嵌套數(shù)組,flatMap() 就是您成功的靈丹妙藥:PyG28資訊網(wǎng)——每日最新資訊28at.com

let nestedArray = [[1], [2, 3], [4]];let flattenedArray = nestedArray.flatMap(x => x);console.log(flattenedArray); // Output: [1, 2, 3, 4]

在這里,flatMap() 返回每個子數(shù)組并將其展平為一個新數(shù)組,就像煉金術(shù)大師將賤金屬變成黃金一樣。PyG28資訊網(wǎng)——每日最新資訊28at.com

flat() 與 flatMap()

用例場景

 flat():當(dāng)你在尋求展平嵌套數(shù)組而不改變元素時,flat() 是你的最佳選擇。它可以將多層數(shù)組展平到你想要的深度,像藏寶圖一樣顯示所有元素。PyG28資訊網(wǎng)——每日最新資訊28at.com

flatMap():如果你的任務(wù)不僅是展平數(shù)組,而且還要先轉(zhuǎn)換元素,例如在展平之前將每個元素映射到不同的值,那么 flatMap() 就是您值得信賴的伙伴。它結(jié)合了 map() 和 flat() 的功能,在一個英勇的行為中完成轉(zhuǎn)換和展平。PyG28資訊網(wǎng)——每日最新資訊28at.com

性能比較

flatMap() 更高效:使用 flatMap() 通常比先轉(zhuǎn)換 map() 然后 flat() 更有效,因為 flatMap() 遍歷數(shù)組一次,而不是兩次。PyG28資訊網(wǎng)——每日最新資訊28at.com

這意味著在處理大量數(shù)據(jù)時,flatMap() 可能會表現(xiàn)更好,從而減少不必要的遍歷開銷。PyG28資訊網(wǎng)——每日最新資訊28at.com

限制

flatMap() 的局限性:盡管 flatMap() 很強大,但它只能展平一層嵌套。如果你的數(shù)組是一個深層嵌套的迷宮,并且你需要完全解開它,那么,你仍然需要使用具有適當(dāng)深度的 flat()。例如,flat(2) 可以展平兩層嵌套,而 flatMap() 只能管理一層。PyG28資訊網(wǎng)——每日最新資訊28at.com

結(jié)論

在 JavaScript 世界中,掌握 flat() 和 flatMap() 的數(shù)組方法不僅可以將你的代碼制作成時尚、優(yōu)雅的杰作,還可以增強你像真正的編碼向?qū)б粯犹幚韽?fù)雜數(shù)據(jù)結(jié)構(gòu)的能力。 PyG28資訊網(wǎng)——每日最新資訊28at.com

希望今天的神奇分享能幫助您掌握這兩種方法,并在你的項目中自信地運用它們。PyG28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-112715-0.htmlflat() 和 flatMap() 有什么區(qū)別?

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: SpringBoot異步接口實現(xiàn):提高系統(tǒng)的吞吐量

下一篇: SpringBoot 3.3 中實現(xiàn) API 接口限流就是這么簡單

標(biāo)簽:
  • 熱門焦點
  • Redmi Buds 4開箱簡評:才199還有降噪 可以無腦入

    在上個月舉辦的Redmi Note11T Pro系列新機發(fā)布會上,除了兩款手機新品之外,Redmi還帶來了兩款TWS真無線藍(lán)牙耳機產(chǎn)品,Redmi Buds 4和Redmi Buds 4 Pro,此前我們在Redmi Note11T
  • 太卷!Redmi MAX 100英寸電視便宜了:12999元買Redmi史上最大屏

    8月5日消息,從小米商城了解到,Redmi MAX 100英寸巨屏電視日前迎來官方優(yōu)惠,到手價12999元,比發(fā)布價便宜了7000元,在大屏電視市場開卷。據(jù)了解,Redmi MAX 100
  • 28個SpringBoot項目中常用注解,日常開發(fā)、求職面試不再懵圈

    前言在使用SpringBoot開發(fā)中或者在求職面試中都會使用到很多注解或者問到注解相關(guān)的知識。本文主要對一些常用的注解進行了總結(jié),同時也會舉出具體例子,供大家學(xué)習(xí)和參考。注解
  • K8S | Service服務(wù)發(fā)現(xiàn)

    一、背景在微服務(wù)架構(gòu)中,這里以開發(fā)環(huán)境「Dev」為基礎(chǔ)來描述,在K8S集群中通常會開放:路由網(wǎng)關(guān)、注冊中心、配置中心等相關(guān)服務(wù),可以被集群外部訪問;圖片對于測試「Tes」環(huán)境或者
  • 19個 JavaScript 單行代碼技巧,讓你看起來像個專業(yè)人士

    今天這篇文章跟大家分享18個JS單行代碼,你只需花幾分鐘時間,即可幫助您了解一些您可能不知道的 JS 知識,如果您已經(jīng)知道了,就當(dāng)作復(fù)習(xí)一下,古人云,溫故而知新嘛。現(xiàn)在,我們就開始今
  • 一文掌握 Golang 模糊測試(Fuzz Testing)

    模糊測試(Fuzz Testing)模糊測試(Fuzz Testing)是通過向目標(biāo)系統(tǒng)提供非預(yù)期的輸入并監(jiān)視異常結(jié)果來發(fā)現(xiàn)軟件漏洞的方法。可以用來發(fā)現(xiàn)應(yīng)用程序、操作系統(tǒng)和網(wǎng)絡(luò)協(xié)議等中的漏洞或
  • 破圈是B站頭上的緊箍咒

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之每年的暑期檔都少不了瞄準(zhǔn)追劇女孩們的古偶劇集,2021年有優(yōu)酷的《山河令》,2022年有愛奇藝的《蒼蘭訣》,今年卻輪到小破站抓住了追
  • iQOO 11S新品發(fā)布會

    iQOO將在7月4日19:00舉行新品發(fā)布會,推出杭州亞運會電競賽事官方用機iQOO 11S。
  • 超級標(biāo)準(zhǔn)版旗艦!iQOO 11S全球首發(fā)iQOO超算獨顯芯片

    上半年已接近尾聲,截至目前各大品牌旗下的頂級旗艦都已悉數(shù)亮相,而下半年即將推出的頂級旗艦已經(jīng)成為了數(shù)碼圈爆料的主流,其中就包括全新的iQOO 11S系
Top 主站蜘蛛池模板: 荆州市| 尚志市| 全南县| 宜黄县| 杭州市| 尤溪县| 宁阳县| 顺平县| 鞍山市| 淅川县| 清涧县| 荣昌县| 宁海县| 新河县| 嘉义市| 筠连县| 厦门市| 楚雄市| 竹溪县| 河津市| 秦皇岛市| 五原县| 东莞市| 怀来县| 托克逊县| 衡阳市| 庐江县| 泰州市| 沾化县| 确山县| 马公市| 南召县| 繁峙县| 盐城市| 土默特左旗| 昭平县| 昌平区| 陈巴尔虎旗| 社旗县| 崇左市| 星座|