You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将嵌套对象结构的revisions数组转换为扁平化表格格式数组

解决方案

首先你需要先收集所有数据里出现过的非主键字段,确保每条输出的属性统一,缺失值自动补空,实现逻辑如下:

实现代码

function loopData(revisions: any) {
  // 第一步:收集所有出现过的非主键字段,去重
  const allFields = new Set<string>();
  revisions.data.forEach((item: Record<string, any>) => {
    Object.keys(item).forEach(key => {
      // 主键(cId/dccId)单独处理,不进通用字段集合
      if (key !== 'cId' && key !== 'dccId') {
        allFields.add(key);
      }
    });
  });
  const fieldList = Array.from(allFields);

  // 第二步:遍历转换每条数据
  const newData = revisions.data.map((item: Record<string, any>) => {
    // 先处理统一主键cId
    const result: Record<string, any> = {
      cId: (item.cId?.value ?? item.dccId?.value ?? '') + ''
    };
    // 遍历所有通用字段,生成New/Old后缀属性
    fieldList.forEach(field => {
      const fieldData = item[field];
      result[`${field}New`] = fieldData?.value !== undefined ? fieldData.value + '' : '';
      result[`${field}Old`] = fieldData?.oldValue !== undefined ? fieldData.oldValue + '' : '';
    });
    return result;
  });

  console.log(JSON.stringify(newData, null, 2));
  return newData;
}

逻辑说明

  • 先遍历所有原始数据项,把所有非主键的字段名去重存下来,保证每条输出的属性数量完全一致
  • 单独处理主键:兼容cId和dccId两种主键字段名,统一输出为cId属性
  • 通用字段自动生成带New/Old后缀的属性,字段存在则取对应value/oldValue,不存在则赋值为空字符串
  • 所有值统一转成字符串格式,和预期输出格式对齐

内容的提问来源于stack exchange,提问作者Garrett Liebman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 14:45:01