如何将嵌套结构对象数组合并转换为单层扁平对象数组
数组结构转换实现方案
核心逻辑是遍历外层每个带labNumber的对象,将外层的labNumber字段和内层sampleRepeats数组中的每一项合并为新对象,最终收集所有新对象得到要求的单层数组。
推荐写法(ES2019+ 原生支持)
直接用数组的flatMap方法实现,代码最简洁,执行效率高:
// 替换成你的实际数据源即可 const originList = [ { "labNumber": 1, "sampleRepeats": [ {"lab": "CORE","reason": "Equipment failure","count": 1} ] }, { "labNumber": 2, "sampleRepeats": [ {"lab": "CORE","reason": "Tecan150 failed","count": 2} ] } ] const flatList = originList.flatMap(labItem => labItem.sampleRepeats.map(repeatItem => ({ labNumber: labItem.labNumber, ...repeatItem })) )
flatMap会自动将内部遍历返回的二维数组拍平为一维,不需要额外做扁平化操作。
兼容旧环境写法
如果运行环境不支持flatMap,可以用reduce配合循环实现,逻辑完全一致:
const flatList = originList.reduce((result, labItem) => { labItem.sampleRepeats.forEach(repeatItem => { result.push({ labNumber: labItem.labNumber, ...repeatItem }) }) return result }, [])
注意:以上两种写法都不会修改原始数组的数据,如果某条外层数据的
sampleRepeats为空数组,会自动跳过,不会生成无效的空对象项。
内容的提问来源于stack exchange,提问作者Khang Nguyen
相关产品推荐
相关产品推荐

