如何将扁平数组数据按id分组转换为适配UI组件库的结构化格式?
扁平数组按id分组转换实现方案
直接使用哈希表分组的方案即可完成转换,时间复杂度为O(n),适合各类数据量场景:
function transformData(rawData) { // 初始化分组映射表 const groupMap = {} rawData.forEach(item => { const { id, time, value } = item // 不存在对应id的分组则先初始化 if (!groupMap[id]) { groupMap[id] = { id, data: [] } } // 仅保留需要的time、value字段存入data数组 groupMap[id].data.push({ time, value }) }) // 将映射表转为数组格式返回 return Object.values(groupMap) }
调用示例
假设你提供的原始数组存放在rawData变量中,直接调用函数即可得到目标结构:
const targetData = transformData(rawData)
补充说明
- 如果需要对最终输出的数组按id排序,可以对返回的
Object.values(groupMap)增加排序逻辑,示例:// 按id字典序排序示例 return Object.values(groupMap).sort((a, b) => a.id.localeCompare(b.id)) - 该实现会自动忽略原始数据中
table等不需要的字段,符合需求要求。
内容的提问来源于stack exchange,提问作者Oleh Strokan
相关产品推荐
相关产品推荐

