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

使用JavaScript map方法格式化对象数组 按序提取父子节点指定字段

对象结构格式化实现方案

你可以通过数组遍历的方式完成结构转换,核心逻辑是遍历接口返回的原始数组,每处理一条数据先插入格式化后的父节点,再遍历该条数据下的所有子节点逐个格式化插入,全程保留要求的空字段即可。

实现代码

/**
 * 格式化接口返回的父子结构数据
 * @param {Array} sourceArr 接口返回的原始数组
 * @returns {Array} 格式化后的目标结构数组
 */
function formatData(sourceArr) {
  return sourceArr.reduce((result, currentItem) => {
    // 构造父节点格式化对象
    const parentNode = {
      recNum: currentItem.parent.recnum,
      prtNme: currentItem.parent.prtnme,
      date: '',
      locNum: '',
      locDescription: '',
      lotSerNum: '',
      byTrans: '',
      running: currentItem.parent.qtyohn,
      unitCost: '',
      extCost: ''
    };
    result.push(parentNode);

    // 遍历构造所有子节点格式化对象
    currentItem.children.forEach(child => {
      const childNode = {
        recNum: '',
        prtNme: '',
        date: '',
        locNum: child.location?.number ?? '',
        locDescription: child.location?.description ?? '',
        lotSerNum: '',
        byTrans: '',
        running: child.qtyohn,
        unitCost: '',
        extCost: ''
      };
      result.push(childNode);
    });

    return result;
  }, []);
}

// 调用方式:传入接口返回的原始数组即可得到目标结果
const targetData = formatData(apiRawData);

说明

  • 代码中使用了可选链和空值合并运算符做兼容处理,若个别子节点的location字段为空,会自动填充空字符串,不会抛出运行时错误
  • 所有要求保留的空字段均完整保留,后续需要填充数据时直接修改对应字段即可
  • 输出顺序严格遵循「父节点在前,其下所有子节点按原顺序依次排列」的要求,和你需要的输出规则完全匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:31:28