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

JS遍历dataToInsert提取键名片段生成指定结构data的方法

代码修改方案

你原有代码的问题是硬编码了固定外层键FOI_OMG_101做内层遍历,既没有拿到外层动态键名做截取,也没有做目标结构组装,按以下逻辑修改即可:

  1. 直接遍历dataToInsert的外层键值对,不要写死固定键名,适配所有同规则的外层属性
  2. 对外层键做字符串分割,按下划线拆分后取最后一段,就是你需要的field值
  3. 把提取到的field、内层对象的name、value按目标结构组装即可

完整可运行代码

const dataToInsert = {
  FOI_OMG_101 : {
    name : "jghj.pdf",
    value: "base64"
  }
}

const res = []
// 遍历外层所有键值对
for (const [outerKey, innerValue] of Object.entries(dataToInsert)) {
  // 按下划线拆分键名,取最后一段作为field
  const fieldVal = outerKey.split('_').pop()
  // 组装目标结构
  res.push({
    field: fieldVal,
    fileName: innerValue.name,
    value: innerValue.value
  })
}

// 若确定dataToInsert只有1个属性,直接取第一个元素即和示例结构完全一致
const data = res[0]
console.log(data)

关键逻辑说明

  • 键名提取用split('_')拆分字符串后调用pop()取最后一个元素,无论前缀有多少段下划线,都能正确拿到末尾的编号段,比如键名为A_B_C_203时会自动提取到203
  • 如果你的键名提取规则是固定取第N段,直接把pop()换成对应数组下标即可,比如取第三段就写split('_')[2](数组下标从0开始计数)
  • 如果dataToInsert有多个同规则属性,res数组会按顺序存放所有转换后的对象,可直接使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 13:21:24