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

基于元素比对实现JSON数组对象数据填充的技术需求

问题解决:基于唯一标识填充JSON数组空字段

需求概述

以eno作为唯一匹配标识,将第三方Web服务返回的JSON数组中的数据,填充到输入JSON数组的空字段(示例中为sal),同时过滤掉第三方数据中无对应匹配项的条目。

示例数据

输入Payload(Payload1)

{"data": [{"name":"ram","eno":"100","dept":"Sales","sal":null},{"name":"gopal","eno":"101","dept":"Sales","sal":null},{"name":"hari","eno":"102","dept":"Sales","sal":null},{"name":"pankaj","eno":"103","dept":"Sales","sal":null},{"name":"raju","eno":"104","dept":"Sales","sal":null}]}

第三方响应Payload(Payload2)

{"data": [{"eno": "100","sal": 2000},{"eno": "101","sal": 2300},{"eno": "102","sal": 1800},{"eno": "104","sal": 2500}]}

预期结果

{"data": [{"name":"ram","eno":"100","dept":"Sales","sal":2000},{"name":"gopal","eno":"101","dept":"Sales","sal":2300},{"name":"hari","eno":"102","dept":"Sales","sal":1800},{"name":"raju","eno":"104","dept":"Sales","sal":2500}]}

实现思路

  1. 构建匹配映射表:将第三方响应数据转换为以eno为键、对应填充数据为值的对象,实现快速查找匹配项,提升处理效率。
  2. 遍历处理输入数组:对输入的每个条目,通过eno在映射表中查找对应数据并填充空字段;仅保留能找到匹配项的条目。

代码实现(JavaScript)

// 输入Payload
const inputPayload = {"data": [{"name":"ram","eno":"100","dept":"Sales","sal":null},{"name":"gopal","eno":"101","dept":"Sales","sal":null},{"name":"hari","eno":"102","dept":"Sales","sal":null},{"name":"pankaj","eno":"103","dept":"Sales","sal":null},{"name":"raju","eno":"104","dept":"Sales","sal":null}]};

// 第三方响应Payload
const thirdPartyPayload = {"data": [{"eno": "100","sal": 2000},{"eno": "101","sal": 2300},{"eno": "102","sal": 1800},{"eno": "104","sal": 2500}]};

// 构建eno到sal的映射表
const salMap = thirdPartyPayload.data.reduce((map, item) => {
  map[item.eno] = item.sal;
  return map;
}, {});

// 处理输入数据:填充字段并过滤无匹配项
const result = {
  data: inputPayload.data
    .filter(item => salMap.hasOwnProperty(item.eno))
    .map(item => ({
      ...item,
      sal: salMap[item.eno]
    }))
};

console.log(JSON.stringify(result, null, 2));

额外说明

  • 映射表构建和数组遍历的时间复杂度均为线性,整体处理效率较高。
  • 若需填充多个字段,只需修改映射表构建逻辑,将第三方数据中所有需填充的字段存入映射,再在遍历阶段合并即可。
  • 若不需要过滤无匹配项,移除filter步骤即可,此时无匹配条目的空字段会保持原有null值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:13:59