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

如何使用Lodash合并两个数组并重命名键,适配扁平化表格展示

实现方案

你需要先将关联数据按关联字段分组,再遍历基准数组拼接唯一键,核心实现逻辑如下:

首先修正你原有代码的几处错误:

  • 遍历基准错误:需要以BusData1为表格行基准做遍历,而非遍历OtherData2
  • 字段名大小写不匹配:OtherData2的关联字段为BusDataId,你代码中写的BusDataID无法匹配到数据
  • 缺少唯一键生成逻辑:直接合并对象会出现同键名覆盖,无法生成表格需要的唯一列字段

完整Lodash实现代码

// 1. 将OtherData2按关联字段BusDataId分组,加速查找
const otherDataGroup = _.groupBy(OtherData2, 'BusDataId')

// 2. 遍历BusData1生成合并后的扁平数组
const Combined = _.map(BusData1, busRow => {
  // 拷贝原数据避免修改原始接口返回值
  const mergedRow = _.cloneDeep(busRow)
  // 取出当前行关联的所有OtherData2条目
  const relatedRows = otherDataGroup[busRow.id] || []

  // 遍历关联条目,生成唯一键并赋值
  _.forEach(relatedRows, otherRow => {
    const uniqueKey = `BusDataId${otherRow.id}ObjRef`
    mergedRow[uniqueKey] = otherRow.ObjRef
  })

  // 以下为匹配你示例效果的字段处理,不需要可删除
  mergedRow.ObjRefLabel = mergedRow.ObjRefLabel.split(' - ')[1]
  if (relatedRows.length) {
    mergedRow.ObjRefDesc = relatedRows[0].ObjRefDesc
  }

  return mergedRow
})

注:你给出的预期结果中id为12的条目里BusDataId31ObjRef为笔误,按原始数据关联规则,实际生成的键应为BusDataId32ObjRef,值为0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:24:03