ES6数组的`flat()`和`flatMap()`函数用法

今天给大家分享ES6中两个超实用的数组函数:flat()flatMap(),学会它们能让数组处理变得更轻松!

1. flat()函数

1.1 基本介绍

flat()用于将嵌套数组"拍平",即将多维数组转换为一维数组。

1.2 语法

javascript 复制代码
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)
javascript 复制代码
const arr = [1, [2, 3], [4, [5, 6]]];
console.log(arr.flat(2)); 
// 输出: [1, 2, 3, 4, 5, 6]
完全拍平(Infinity)
javascript 复制代码
const arr = [1, [2, [3, [4]]]];
console.log(arr.flat(Infinity));
// 输出: [1, 2, 3, 4]

1.4 注意事项

  • 自动移除空元素
javascript 复制代码
console.log([1, , 3].flat()); // 输出: [1, 3]

2. flatMap()函数

2.1 基本介绍

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

2.2 语法

javascript 复制代码
const newArray = arr.flatMap(callback(currentValue[, index[, array]]){
  // 返回新数组元素
});

2.3 示例

javascript 复制代码
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 实际应用

javascript 复制代码
// 拆分字符串并展开
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)

复制代码
相关推荐
东东51618 分钟前
智能社区管理系统的设计与实现ssm+vue
前端·javascript·vue.js·毕业设计·毕设
catino21 分钟前
图片、文件的预览
前端·javascript
2501_920931702 小时前
React Native鸿蒙跨平台实现推箱子游戏,完成玩家移动与箱子推动,当所有箱子都被推到目标位置时,玩家获胜
javascript·react native·react.js·游戏·ecmascript·harmonyos
layman05282 小时前
webpack5 css-loader:从基础到原理
前端·css·webpack
半桔2 小时前
【前端小站】CSS 样式美学:从基础语法到界面精筑的实战宝典
前端·css·html
AI老李2 小时前
PostCSS完全指南:功能/配置/插件/SourceMap/AST/插件开发/自定义语法
前端·javascript·postcss
_OP_CHEN2 小时前
【前端开发之CSS】(一)初识 CSS:网页化妆术的终极指南,新手也能轻松拿捏页面美化!
前端·css·html·网页开发·样式表·界面美化
啊哈一半醒2 小时前
CSS 主流布局
前端·css·css布局·标准流 浮动 定位·flex grid 响应式布局
PHP武器库2 小时前
ULUI:不止于按钮和菜单,一个专注于“业务组件”的纯 CSS 框架
前端·css
电商API_180079052473 小时前
第三方淘宝商品详情 API 全维度调用指南:从技术对接到生产落地
java·大数据·前端·数据库·人工智能·网络爬虫