Javascript Node.js环境下嵌套数组展平与拆分实现问题
多层嵌套数组拆分方案
需求说明
现有三维嵌套数组,编码相同的条目被归入同一个二级子数组中,需要将同组条目拆分输出,原数组示例如下:
[ [ [ '0011', 6, 96, '2021-08-16' ], [ '0011', 2, 4, '2021-08-17' ] ], [ [ '0032', 20, 26, '2021-08-16' ] ], [ [ '0098', 6, 246, '2021-08-16' ], [ '0098', 0, 0, '2021-08-17' ] ], [ [ '0093', 2, 30, '2021-08-16' ] ], [ [ '0051', 32, 229, '2021-08-16' ] ], [ [ '0053', 27, 63, '2021-08-16' ], [ '0053', 2, 38, '2021-08-17' ] ], [ [ '0022', 4, 2, '2021-08-16' ], [ '0022', 6, 12, '2021-08-17' ] ], [ [ '0067', 2, 144, '2021-08-16' ] ], [ [ '0166', 4, 102, '2021-08-16' ] ], [ [ '0015', 4, 96, '2021-08-16' ] ], ]
需要实现两种输出格式:
- 拆分后每个条目单独包裹为三维数组单元,同组条目不再放在同一个二级子数组中
- 整体展平为二维数组,每个条目直接作为一级子数组单元
实现代码(以JavaScript为例)
第一种输出格式实现
使用flatMap遍历分组,将每个条目单独包裹一层数组后展平一级:
const result1 = arr.flatMap(group => group.map(item => [item]))
第二种输出格式实现
直接展平一层数组,移除分组层级即可:
const result2 = arr.flat(1)
逻辑说明
flatMap方法等价于先执行map映射再执行flat(1)展平,刚好适配拆分分组的需求,不会破坏条目的原始结构flat(1)指定只展平1层嵌套,仅移除二级分组层级,不会把最内层的条目数组拆解开,避免了全量flatten导致的条目结构被破坏的问题。
内容的提问来源于stack exchange,提问作者john
相关产品推荐
相关产品推荐

