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

JavaScript如何按字段映射规则将两个数组合并为指定格式对象数组

实现方案

实现思路

  • 先将配置数组a转换为name到header的映射表,提升键名查找效率
  • 合并数组b中所有的独立对象为一个总对象,统一处理键名替换逻辑
  • 遍历总对象的键值对,按照映射表替换键名,生成符合要求的结果数组

完整代码

function generateTargetArray(a, b) {
  // 生成键名映射表
  const keyMap = a.reduce((map, item) => {
    map[item.name] = item.header;
    return map;
  }, {});
  // 合并b数组的所有对象
  const mergedB = Object.assign({}, ...b);
  // 替换键名生成结果对象
  const resultObj = Object.entries(mergedB).reduce((obj, [oldKey, value]) => {
    // 没有匹配到映射规则时默认保留原键,不需要的话可以加判断过滤该键
    const newKey = keyMap[oldKey] ?? oldKey;
    obj[newKey] = value;
    return obj;
  }, {});
  // 按要求返回包裹在数组中的结果对象
  return [resultObj];
}

// 测试用例
const a =[{  name: 'CreatedDateTime', header: 'Tarih' },{  name: 'Name', header: 'Adi' }]
const b= [{ CreatedDateTime:"10.1.2021" },{Name:"Merve"}]
const c = generateTargetArray(a, b);
console.log(c); // 输出:[{Tarih:"10.1.2021" , Adi:"Merve" }]

场景适配说明

如果你的实际业务中b数组的每个对象不需要合并,而是需要每个对象单独完成键名替换后返回数组,只需要删除合并逻辑,直接遍历b数组的每个对象做键名替换即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:30:00