当前位置: 首页 > news >正文

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.dtcms.com/a/264359.html

相关文章:

  • 黑马python(二十三)
  • vue2 el-select下拉选择框 点击其他位置或者弹窗关闭下拉框/点击取消时,下拉框变成之前的值
  • 2025年跨端云真机测试平台深度测评:XR与折叠屏时代的兼容性之战
  • 《量化开发》系列 第 1 篇:金融知识基础入门指南(附 GitHub 学习项目)
  • 什么是 BigKey?
  • 定时器的设计
  • 电源芯片之DCDC初探索ING
  • 用lines_gauss的width属性提取缺陷
  • 视频内存太大怎么压缩变小一点?视频压缩的常用方法
  • 复现nanoGPT——train.py(详细版拆解)
  • k8s将service的IP对应的不同端口分配到不同的pod上
  • 【普通人学AI】玩转 Prompt 提示词工程 (一)
  • 使用 icinga2 写入 TDengine
  • 翻译《The Old New Thing》- 解除路径的 MAX_PATH 限制仅适用于路径本身
  • 通过http调用来访问neo4j时报错,curl -X POST 执行指令报错
  • C# 程序:查看 PageUp 热键消息映射表
  • torch.nn
  • Vue 安装使用教程
  • [Python] -基础篇8-Python中的注释与代码风格PEP8指南
  • muduo
  • SQL学习笔记6
  • OpenCV篇——项目(一)OCR识别读取银行卡号码
  • 在 Docker 容器中使用内网穿透
  • ubuntu 安装QT
  • 【python】三元表达式
  • Jeecg前端经验汇总
  • 扫描电子显微镜(SEM)夏令营面试基础题及答案
  • 五个元素一行均分三个换行且有间距,如何均分布局
  • 设计模式之上下文对象设计模式
  • 机器学习在智能金融风险评估中的应用:信用评分与欺诈检测