ES6數組的`flat()`和`flatMap()`函數用法

今天給大家分享ES6中兩個超實用的數組函數:flat()flatMap(),學會它們能讓數組處理變得更輕松!

1. flat()函數

1.1 基本介紹

flat()用于將嵌套數組"拍平",即將多維數組轉換為一維數組。

1.2 語法

const newArray = oldArray.flat([depth]);
- `depth`:可選參數,表示拍平深度,默認值為1### 1.3 示例#### 默認深度(depth=1```javascript
const arr = [1, [2, 3], [4, [5, 6]]];
console.log(arr.flat()); 
// 輸出: [1, 2, 3, 4, [5, 6]]
指定深度(depth=2)
const arr = [1, [2, 3], [4, [5, 6]]];
console.log(arr.flat(2)); 
// 輸出: [1, 2, 3, 4, 5, 6]
完全拍平(Infinity)
const arr = [1, [2, [3, [4]]]];
console.log(arr.flat(Infinity));
// 輸出: [1, 2, 3, 4]

1.4 注意事項

  • 自動移除空元素
console.log([1, , 3].flat()); // 輸出: [1, 3]

2. flatMap()函數

2.1 基本介紹

flatMap()map()flat(1)的組合,先映射再拍平一層。

2.2 語法

const newArray = arr.flatMap(callback(currentValue[, index[, array]]){// 返回新數組元素
});

2.3 示例

const nums = [1, 2, 3];// 等效于map后接flat(1)
console.log(nums.flatMap(x => [x * 2])); 
// 輸出: [2, 4, 6]// 只能拍平一層
console.log(nums.flatMap(x => [[x * 2]]));
// 輸出: [[2], [4], [6]]

2.4 實際應用

// 拆分字符串并展開
const sentences = ["Hello world", "Good morning"];
console.log(sentences.flatMap(s => s.split(' ')));
// 輸出: ["Hello", "world", "Good", "morning"]

總結對比

方法作用拍平深度
flat()單純拍平數組可指定
flatMap()先map再flat(1)固定1層

這兩個方法在處理嵌套數組時非常有用,合理使用可以讓代碼更簡潔高效!

小貼士:遇到復雜嵌套結構時,可以組合使用map+flat或直接使用flat(Infinity)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/912690.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/912690.shtml
英文地址,請注明出處:http://en.pswp.cn/news/912690.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

upload-labs靶場通關詳解:第15-16關

第十五關 getimagesize函數驗證 一、分析源代碼 function isImage($filename){$types .jpeg|.png|.gif;if(file_exists($filename)){$info getimagesize($filename);$ext image_type_to_extension($info[2]);if(stripos($types,$ext)>0){return $ext;}else{return false…

【Linux】基礎IO流

好的代碼自己會說話,清晰的邏輯與優雅的結構,是程序員與世界對話的方式。 前言 這是我自己學習Linux系統編程的第五篇筆記。后期我會繼續把Linux系統編程筆記開源至博客上。 上一期筆記是關于進程: 【Linux】進程-CSDN博客https://blog.csdn…

【C語言】學習過程教訓與經驗雜談:思想準備、知識回顧(二)

🔥個人主頁:艾莉絲努力練劍 ?專欄傳送門:《C語言》、《數據結構與算法》、C語言刷題12天IO強訓、LeetCode代碼強化刷題 🍉學習方向:C/C方向 ??人生格言:為天地立心,為生民立命,為…

AD8021ARZ-REEL7【ADI】300MHz低噪聲運放放大器,高頻信號處理的性價比之選!

AD8021ARZ-REEL7(ADI)產品解析與推廣文案 1. 產品概述 AD8021ARZ-REEL7 是 Analog Devices Inc.(ADI) 推出的一款 高速、低噪聲運算放大器(Op-Amp),屬于 ADI的高性能放大器系列,專為…

WPF學習筆記(11)數據模板DataTemplate與數據模板選擇器DataTemplateSelector

數據模板DataTemplate與數據模板選擇器DataTemplateSelector 一、DataTemplate1. DataTemplate概述2. DataTemplate詳解 二、DataTemplateSelector1. DataTemplateSelector概述2. DataTemplateSelector詳解 總結 一、DataTemplate 1. DataTemplate概述 DataTemplate 表示數據…

【V6.0 - 聽覺篇】當AI學會“聽”:用聲音特征捕捉視頻的“情緒爽點”

系列回顧: 在上一篇 《AI的“火眼金睛”:用OpenCV和SHAP洞察“第一眼緣”》 中,我們成功地讓AI擁有了視覺,它已經能像一個嚴苛的“質檢員”一樣,評判我視頻的畫質和動態感。 但我的焦慮并沒有完全消除。因為我發現&a…

(5)pytest-yield操作

1. 簡介 上一篇中,我們剛剛實現了在每個用例之前執行初始化操作,那么用例執行完之后如需要清除數據(或還原)操作,可以使用 yield 來實現。fixture通過scope參數控制setup級別,既然有setup作為用例之前前的操…

C++中的cmath庫

在C編程中,數值計算是科學計算、工程應用及算法開發的基礎。cmath庫作為C標準庫的重要組成部分,提供了豐富的數學函數和工具,能夠高效處理各種數值計算任務。本文將全面解析cmath庫的核心功能,并通過實戰案例展示其強大威力。 一…

python包管理工具uv VS pip

在 Python 中,uv 和 pip 都是包管理工具,但它們的定位和特性有所不同。以下是主要區別: 1. pip(傳統工具) 定位:Python 官方的包安裝工具,是 Python 生態中最基礎的包管理器。特點:…

OpenCv基礎(C++)

1.圖像讀取與顯示 #include<opencv2/opencv.hpp> using namespace cv;Mat src imread("C:/Users/16385/Desktop/new/photo/1.jpg");//讀取圖像 Mat src imread("C:/Users/16385/Desktop/new/photo/1.jpg",IMREAD_GRAYSCALE); //將讀取的圖像轉為灰…

MySQL非阻塞創建索引的方法

文章目錄 1. Online DDL (MySQL 5.6)2. pt-online-schema-change 工具3. gh-ost 工具4. 對于MySQL 8.0注意事項 在MySQL中創建大型表索引時&#xff0c;傳統方式會阻塞表的寫操作&#xff0c;影響生產環境使用。以下是幾種非阻塞創建索引的方法&#xff1a; 1. Online DDL (My…

數字雨動畫背景

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>數字雨動畫背景</title><style>* {m…

分布式鎖的概念與應用場景

一、分布式鎖的核心概念 分布式鎖是一種在分布式系統環境下&#xff0c;用于保證多個進程/節點對共享資源實現互斥訪問的機制。其本質是通過某種中間件&#xff08;如Redis、ZooKeeper等&#xff09;實現跨節點的鎖控制&#xff0c;確保在分布式環境中&#xff0c;同一時刻只有…

js代碼09

題目 好的&#xff0c;我們繼續。 在上一個練習中&#xff0c;我們深入探討了 this 的復雜性。你會發現&#xff0c;ES6 引入的 class 語法在很大程度上就是為了簡化 this 的使用&#xff0c;并為 JavaScript 提供一個更清晰、更熟悉的面向對象編程&#xff08;OOP&#xff0…

基于Airtest的App數據爬取實戰:突破傳統爬蟲的邊界

引言:App數據爬取的技術困境 在當今移動優先的時代,App已成為企業核心數據載體,然而??傳統爬蟲技術??在App數據獲取上面臨三大難題: ??協議層屏障??:加密HTTPS、SSL Pinning等技術阻斷中間人攻擊??渲染層障礙??:React Native、Flutter等跨平臺框架使DOM解析…

【LeetCode 熱題 100】560. 和為 K 的子數組——(解法一)前綴和+暴力

Problem: 560. 和為 K 的子數組 題目&#xff1a;給你一個整數數組 nums 和一個整數 k &#xff0c;請你統計并返回 該數組中和為 k 的子數組的個數 。子數組是數組中元素的連續非空序列。 【LeetCode 熱題 100】560. 和為 K 的子數組——&#xff08;解法二&#xff09;前綴和…

android車載開發之HVAC

目前主要在做車載hvac的開發&#xff0c;主要的一些功能主要是hvac&#xff0c;座椅&#xff0c;香氛&#xff0c;設置等的一些模塊&#xff0c;具體模塊下&#xff0c;比如 1.空調 ac&#xff0c;智能模式&#xff08;極速降溫&#xff0c;極速采暖&#xff0c;智能除味&…

深度學習 Diffusers 庫(自留)

&#xff08;本文將圍繞 安裝Diffusers庫及其依賴、理解Diffusers核心概念&#xff1a;Pipeline, Model, Scheduler 、使用預訓練模型進行推理&#xff08;文生圖、圖生圖等&#xff09; 、 自定義模型和調度器 、訓練自己的擴散模型&#xff08;可選&#xff0c;需要大量資源&…

【VPC技術】基礎理論篇

文章目錄 概述相關基礎核心知識軟件定義網絡SDNOverlay 技術 安全組概述 參考博客 &#x1f60a;點此到文末驚喜?? 概述 相關基礎 基本概念 虛擬私有云VPC&#xff1a;是一個隔離的網絡環境&#xff0c;每個VPC擁有專屬的IP地址范圍&#xff08;CIDR&#xff09;、路由表、…

在 RK3588 Ubuntu 上編譯 eglinfo:全流程實戰 + 常見報錯修復

dv1/eglinfo 是一個開源的 EGL 信息檢測工具&#xff0c;廣泛用于 OpenGL ES 圖形棧調試、驅動驗證和嵌入式平臺圖形支持排查。在 Rockchip RK3588 上編譯該工具可以協助我們確認 EGL DRM 是否配置正確&#xff0c;尤其在無窗口系統&#xff08;如 eglfs、framebuffer&#xf…