如何将二维数字数组转换为含row索引的对象数组?
简洁实现二维数组转指定对象数组
输入数组
const layoutMatrix = [ 1, [1], [0.5, 0.5], [0.2, 0.4, 0.4], ];
期望输出
[ { row: 0, span: 1 }, { row: 1, span: 1 }, { row: 2, span: 0.5 }, { row: 2, span: 0.5 }, { row: 3, span: 0.2 }, { row: 3, span: 0.4 }, { row: 3, span: 0.4 }, ]
简洁实现方案
利用数组原生高阶方法,无需繁琐循环或递归,直接完成转换:
const result = layoutMatrix.flatMap((item, rowIndex) => { // 将单个数字转为数组,统一处理逻辑 const spanList = Array.isArray(item) ? item : [item]; // 映射为目标对象格式 return spanList.map(span => ({ row: rowIndex, span })); });
说明
flatMap会自动展开内层返回的数组,直接得到一维的对象数组- 先把单个数字转为数组,保证后续处理逻辑统一,适配题目中“一级元素可为单个数字或数字数组”的前提
- 全程使用数组原生方法,代码简洁易读
内容的提问来源于stack exchange,提问作者Brandon Durham
相关产品推荐
相关产品推荐

