如何将对象数组的嵌套数组转换为带唯一ID的单对象数组?
嵌套数组转换最优解法
实现思路
利用数组的map方法做线性遍历,同时借助遍历索引生成唯一ID,通过计算属性名将原对象的prop1值作为新对象的键、prop2值作为对应值,一步完成转换,时间复杂度为O(n),是效率最高的实现方式。
代码实现
首先定义原嵌套数组:
const originalArray = [ [ { prop1: 'FieldName', prop2: 'FieldValue' } ], [ { prop1: 'OtherFieldName', prop2: 'OtherFieldValue' } ] ];
执行转换逻辑:
const transformedArray = originalArray.map((subArr, idx) => { const { prop1, prop2 } = subArr[0]; return { id: idx + 1, [prop1]: prop2 }; });
转换结果
运行后得到目标格式的数组:
[ { id: 1, FieldName: 'FieldValue' }, { id: 2, OtherFieldName: 'OtherFieldValue' } ]
补充说明
如果原数组的子数组可能包含多个对象(当前题目中每个子数组仅含一个),可以先通过flat()方法扁平化数组后再处理,示例如下:
// 处理子数组多对象的情况 const transformedArray = originalArray.flat().map((item, idx) => ({ id: idx + 1, [item.prop1]: item.prop2 }));
内容的提问来源于stack exchange,提问作者Mantas Sutkevičius
相关产品推荐
相关产品推荐

