# 按深度扁平化数组

使用 lodash _.flattenDepth 按指定深度扁平化数组

> 标准页面: https://elysiatools.com/zh/tools/flatten-depth-array

- **分类:** Data Processing

- **关键词:** 数组, 扁平化, 深度, 嵌套, lodash, 级别

## 概述

将数组扁平化到指定的深度级别（嵌套扁平化到指定级别）。

## 功能特性：
- 接受任意深度的深层嵌套 JSON 数组
- 可自定义扁平化深度（1-10 级）
- 精确控制扁平化级别
- 处理混合数据类型的数组
- 使用 lodash _.flattenDepth 进行受控扁平化

## 示例：
- 深度 1：[1, [2, [3, [4]]], 5] → [1, 2, [3, [4]], 5]
- 深度 2：[1, [2, [3, [4]]], 5] → [1, 2, 3, [4], 5]
- 深度 3：[1, [2, [3, [4]]], 5] → [1, 2, 3, 4, 5]

## 使用场景：
- **受控转换**：扁平化到特定级别同时保留更深层结构
- **数据处理**：逐级处理嵌套数组
- **部分扁平化**：减少嵌套而不丢失所有结构
- **渐进式操作**：在特定嵌套级别应用转换

## 输入项

- **数组输入** (textarea): 输入包含深层嵌套元素的有效 JSON 数组
- **扁平化深度** (number): 要扁平化的级别数（1-10）

## 适用场景

- 当您需要减少数组嵌套层级，但又不想完全打平所有数据时。
- 当处理复杂的 JSON 数据结构，需要按特定层级进行分步解析时。
- 当您希望在保留部分嵌套结构的同时，简化数组的访问路径时。

## 工作原理

- 在输入框中粘贴您的嵌套 JSON 数组。
- 设置“扁平化深度”参数（1 到 10 级），定义您希望展开的嵌套层数。
- 点击执行，工具将根据指定的深度递归展开数组元素。
- 获取扁平化后的结果，并根据需要进行后续的数据处理。

## 使用案例

- 受控转换：扁平化到特定级别同时保留更深层结构。
- 数据处理：逐级处理嵌套数组，简化数据提取逻辑。
- 渐进式操作：在特定嵌套级别应用转换，避免一次性处理带来的复杂性。

## 常见问题

### 什么是扁平化深度？

深度是指数组嵌套的层级。深度为 1 表示仅展开最外层的嵌套，深度为 2 则会展开两层，以此类推。

### 如果设置的深度超过了数组实际嵌套深度会怎样？

工具会直接将数组完全扁平化，直到变成一个一维数组，不会报错。

### 该工具支持哪些数据类型？

支持包含数字、字符串、对象或嵌套数组等混合数据类型的标准 JSON 数组。

### 为什么需要指定深度而不是直接全部扁平化？

在某些数据处理场景中，保留部分嵌套结构对于后续的逻辑分组或层级遍历至关重要。

### 该工具是否会修改原始数据？

不会，该工具仅在浏览器端进行计算并返回结果，不会对您的原始数据源进行任何修改。

## 相关工具

- [数组分块](https://elysiatools.com/zh/tools/chunk-array): 使用 lodash _.chunk 将数组按指定大小分割成块
- [填充数组](https://elysiatools.com/zh/tools/fill-array): 使用 lodash _.fill 从起始索引到结束索引用值填充数组
- [数组扁平化](https://elysiatools.com/zh/tools/flatten-array): 使用 lodash _.flatten 将数组扁平化一层
- [从键值对构建对象](https://elysiatools.com/zh/tools/from-pairs): 使用 lodash _.fromPairs 将键值对数组转换为对象
- [排除指定值](https://elysiatools.com/zh/tools/without-values): 使用 lodash _.without 排除数组中的指定值
- [对象赋值](https://elysiatools.com/zh/tools/assign-object): 使用 lodash _.assign 将来源属性赋给目标对象
- [数组压缩工具](https://elysiatools.com/zh/tools/compact-array): 使用 lodash _.compact 从数组中移除假值
- [对象默认值](https://elysiatools.com/zh/tools/defaults-object): 使用 lodash _.defaults 为对象填充默认值

## 示例

- [Grafana 高级应用示例](https://elysiatools.com/zh/samples/grafana-samples): 全面的 Grafana 示例，涵盖高级仪表板设计、告警配置、数据源集成和插件开发
- [二维码示例](https://elysiatools.com/zh/samples/qrcode-samples): 用于测试二维码读取和生成工具的示例二维码图像
- [D3.js 数据可视化示例](https://elysiatools.com/zh/samples/d3js-data-visualization): 全面的D3.js数据可视化示例，包括图表、地图、动画和交互式可视化
- [Rome JavaScript 工具链示例](https://elysiatools.com/zh/samples/rome): Rome JavaScript 工具链示例，包括配置、代码检查、格式化、打包和项目管理
