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

如何将getDealDetails查询结果的summary值追加到getAllData返回的Type-A对象中

实现方案

核心思路

  • 先拉取getAllData返回的全量原始数据,过滤出类型为Type-A的对象并收集对应ID
  • 根据接口限流规则选择并行/串行/批量方式调用getDealDetails查询详情
  • 建立ID与summary值的映射关系,回写字段到原始数组的对应对象中

代码示例(JS/TS 环境)

async function processData() {
  // 1. 获取全量原始数据
  const originalData = await getAllData();

  // 2. 筛选Type-A类型的条目,收集需要查询详情的ID
  const typeAItems = originalData.filter(item => item.Type === 'Type-A');

  // 3. 批量请求详情,这里用Promise.all做并行请求,高并发场景可加限流逻辑
  const detailResults = await Promise.all(
    typeAItems.map(async item => {
      try {
        const detail = await getDealDetails(item.id);
        // 匹配到有效结果则返回summary,否则返回默认值(可按业务调整)
        return detail?.TypeValues?.summary ?? null;
      } catch (err) {
        console.error(`ID为${item.id}的详情查询失败:`, err);
        return null;
      }
    })
  );

  // 4. 建立ID与summary的映射表
  const summaryMap = new Map();
  typeAItems.forEach((item, index) => {
    summaryMap.set(item.id, detailResults[index]);
  });

  // 5. 追加dataValue字段到原始对象
  const finalResult = originalData.map(item => {
    if (item.Type !== 'Type-A') return item;
    return {
      ...item,
      dataValue: summaryMap.get(item.id)
    };
  });

  return finalResult;
}

// 调用方法
processData().then(res => console.log('处理完成的结果:', res));

优化说明

  • 如果getDealDetails支持批量传入ID,优先用批量请求减少HTTP请求开销
  • 若Type-A类型的条目数量超过接口限流阈值,可引入p-limit等工具做并发控制
  • 可根据业务需要调整无匹配结果/接口报错时dataValue的默认值,比如设为空字符串、直接省略该字段等

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:24:02